189 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.6k Punkte)

Hallo und schönen Pfingsten wünsche ich dem Support Team

habe vor langer Zeit von einem eurer Kollegen ein tolles VBA erstellt bekommen, nun habe ich ein kleines Problem. sowie der 3te Wurf erledigt ist hackt es mit der Ansage des dritten Wurfes, hier unterbricht er die Ansage des 3ten Wurfs und sagt das Endergebnis an Ist auch OK. Nur wie verändere ich das, dass er den dritten Wurf ansagt und dann das Gesamtergebnis ansagt?

Es geht um die Punkteansage, die ein Spieler erzielt hat. 

Habe in VBA folgenden ´Code für die einzelne Ansage Der lautet: 

'Ansage Wurfergebnis
Start_Ansage (lngWurf) 

Das ist der Code für die gesamt Ansage. Wenn ich nicht irre.
'hier für die Ansage und Anzeige
'prüfen, ob Überworfen
If bUeberw = True Then
  Start_Ansage (0)
Else

Wenn jemand eine Lösung für mich hätte wäre toll, wenn  nicht ist auch Ok.

Gruß Adde

5 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Adde,

die Ansage des Spielergebnisses müsste nach dem Else kommen. Der Teil des Codes, den du gepostet hast, sagt "no Score" an.

Der Code läuft nach der Ansage des 3. Wurfs weiter, während der Sound noch abgespielt wird. Daher kommt es zu der Unterbrechung.

Probiere mal das Makro Sub Start_Ansage wie folgt zu ergänzen:

Sub Start_Ansage(lngWurf As Long)
'Variablen deklarieren
Dim MediaPlayer As Variant
Dim strSounddatei As String
Dim strPfad As String
'Pfad, in der die Sounddateien liegen - Anpassen
strPfad = "C:\ProgramData\Dart2014\Sounds\"
'Name der abzuspielenden Datei Ermittenln
strSounddatei = lngWurf & ".mp3"
'Mit einem Shell-Befehl den Mediaplayer aufrufen im Hintergrund und die
'Sounddatei abspielen
MediaPlayer = Shell("C:\Program Files (x86)\Windows Media Player\wmplayer.exe """ _
& strPfad & strSounddatei & """", vbHide)

'5 Sekunden warten
Application.Wait Now + TimeValue("00:00:05")

End Sub

Durch das Warten wird ggf. die nächste Ansage etwas verzögert, da die Sounddatei ja über den Mediaplayer abgespielt wird, der "neben" dem normalen Makro läuft. Du kannst ja mal testen, ob die 5 Sekunden reichen und die Wartezeit ggf. anpassen.

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.6k Punkte)

Hallo M.O.

vielen leiben Dank für deinen Vorschlag und deiner Mühe. Habe es umgesetzt. Das Ergebnis ist das Gleiche. Vielleicht habe ich mich auch nicht richtig ausgedrückt. Also wenn ich auf die 1te Zahl klicke sagt er mir die Zahl bei der 2ten auch, nach der 3ten Zahl sagt er mir das Gesamtergebnis und danach vom 3ten Wurf die Zahl. Hätte gerne das der 3te Wurf vor Ansage des Gesamtergebnis angesagt wird. Wenn dies nicht möglich ist, ist es nicht von Bedeutung, dann ist es halt so..

Trotzdem nochmals heartlichen Dank

Gruß Adde

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Adde,

du hast in deiner Frage geschrieben, dass die Ansage des 3. Wurfs unterbrochen wird und dann die Ansage des Gesamtergebnisses kommt. Das müsste vom Makro her auch so sein (auch vom Codeteil, den du gepostet hast).

Probiere mal folgendes. Ergänze den geposteten Code wie folgt:

'Ansage Wurfergebnis
Start_Ansage (lngWurf)

'10 Sekunden warten
Application.Wait Now + TimeValue("00:00:10")

'prüfen, ob Überworfen
If bUeberw = True Then
  Start_Ansage (0)
Else

Ich habe jetzt extra mal 10 Sekunden genommen, dann kannst mal prüfen, ob wirklich zuerst das Gesamtergebnis kommt.

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.6k Punkte)

Hallo M.O.

habe alles gemacht was du vorgeschlagen hast. leider ohne Erfolg. 

Habe diesen Befehl für die Anzeige entfernt.

 Range("H6") = "Geworfen: " & Cells(arrRueck(3), arrRueck(4)).Value + Cells(arrRueck(3), arrRueck(4) - 2) + Cells(arrRueck(3), arrRueck(4) - 1) & vbLf & "Rest: " & Cells(6, arrRueck(4) - 2).Value
    lngAnsage = Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 1) + Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 2) + Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 3)
    Start_Ansage (lngAnsage)
    'Anzeige nach 5 Sekunden wieder löschen
    Application.Wait Now + TimeValue("00:00:5")
    Range("H6") = ""
  End If
End If

Jetzt wird die Ansage von jedem Wurf angesagt. danach sollte eigentlich nach jedem dritten Wurf das Ergebnis der drei Würfe angezeigt und angesagt werden. Denke, dass in dem Befehl für die Anzeige etwas geändert werden müsste.

Aber so wie es jetzt ist, ist es auch Ordnung.

Dir danke ich nochmals für deine Mühe 

Gruß Adde und einen schönen Tag wünsche ich dir

0 Punkte
Beantwortet von addeguddi Experte (2.6k Punkte)

Guten Morgen M.O.

Habe es es geschafft. Wie immer muss ich erst zig mal testen wo was hingehört. Habe diesen Code entfernt 

'hier für die Ansage und Anzeige
'prüfen, ob Überworfen
If bUeberw = True Then
  Start_Ansage (0)
Else
und durch den 
'Ansage Wurfergebnis
Start_Ansage (lngWurf)
'10 Sekunden warten
Application.Wait Now + TimeValue("00:00:2")
'prüfen, ob Überworfen
If bUeberw = True Then
  Start_Ansage (0)
Else

ersetzt, jetzt funktioniert es.

War alles richtig was du geschrieben hast. 

Nochmals vielen Dank. und einen schönen Tag.

Gruß Adde

...