Just nu i M3-nätverket
Jump to content

Spela ljud men avbryt om villkor uppfylls (VBA)


niklas1973
 Share

Recommended Posts

Så. Det här är vad jag vill göra. Jag vill spela ljud A. Men om ett villkor uppfyllts tidigare ska ljud X avbryta Ljud A efter någonstans under uppspelningen av Ljud A. Tiden definieras slumpmässigt men är inte längre än Ljud A (jag har ljudens tidskoder). Då det är klart tar programmet ska ta slut (end) . Har försökt läsa på men det verkar om om Excel inte har den funktionen.

Jag vill inte använda application time då det inte möter det jag önskar.Därför att jag vill öka risken för att ljud X kommer spelas ju fler olika ljud programmet spelat upp:

ljud A spelas:

 

Villkoret för uppspelning av ljud  X möttes inte.

Öka risk med 10% för att ljud X bryter in då ljud B spelas.

Ljud B spelas. (+10% risk att Ljud X nu bryter in).

Villkoret för uppspelning av ljud  X möttes inte.

Ljud C spelas. (+ytterligare 10% risk att Ljud X nu bryter in).

Villkor för uppspelning av Ljud X möttes.

Ljud X spelas

Slut på program

 

Hoppas jag gjorde mig förstådd den här gången. :)

Link to comment
Share on other sites

Oh, undrar om detta går.

Det skulle kräva att Excel kör VBA parallellt, dvs i två trådar.

Jag tror att om du spelar ljud med VBA blir det det VBA gör tills den är klar med det, ingen annan VBA-kod kan startas under tiden.

 

Fast kanske... testa.

Denna, gamla, kod har jag in en bok för att via Windows API spela WAV-filer

Private Declare Function PlaySound Lib "winmm.dll" _
  Alias "PlaySoundA" (ByVal lpszName As String, _
  ByVal hModule As Long, ByVal dwFlags As Long) As Long

Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000

Public Sub WAVPlay(fileName As String)
    On Error Resume Next
    Call PlaySound(fileName, 0&, SND_ASYNC Or SND_FILENAME)
End Sub

där SND_ASYNC gör att ljudet spelas async, dvs på egen tråd.

Men bara ett ljud kan spelas så kommer det in en ny begäran med nytt ljud spelas detta.

Har inte så långa ljud i WAV-format att jag kan testa men det borde gå.

 

Frågan är bara hur du ska kunna... ja men titta på

https://www.exceltrick.com/formulas_macros/vba-wait-and-sleep-functions/?

Link to comment
Share on other sites

 Share



×
×
  • Create New...