Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Kaum Excel/VBA-Kenntnisse
... bei mir wird viel verschluckt... Besser geht es bei mir mit einigen Schleifchen nach den einzelnen Sprachausgaben:
Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
Sub Spielerlisten_Ansage()
Dim s As Object
Dim ws As Worksheet
Dim r As Long
Dim nameH As String, nameD As String
Dim countH As Long, countD As Long
Dim herrenVorhanden As Boolean, damenVorhanden As Boolean
Set ws = Sheets("Spielerliste")
Set s = CreateObject("SAPI.SpVoice")
s.Speak "", 2
Sleep 300
' ===========================
' ===== TURNIERART CHECK ====
' ===========================
nameH = ws.Cells(2, 2).Text ' Herren B2
nameD = ws.Cells(2, 8).Text ' Damen H2
herrenVorhanden = (nameH <> "")
damenVorhanden = (nameD <> "")
If Not herrenVorhanden And Not damenVorhanden Then
s.Speak "Es sind keine Spieler gemeldet.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
Exit Sub
End If
If Not herrenVorhanden And damenVorhanden Then
s.Speak "Es wird ein reines Damenturnier gespielt.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
Sleep 400
ElseIf Not damenVorhanden And herrenVorhanden Then
s.Speak "Es wird ein Herren oder Mixed Turnier gespielt.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
Sleep 400
End If
' ===========================
' ===== STARTMELDUNG ========
' ===========================
s.Speak "Achtung! Es werden alle gemeldeten Spieler vorgelesen.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
Sleep 200
' ===========================
' ===== HERREN VORLESEN =====
' ===========================
If herrenVorhanden Then
If damenVorhanden Then
' Nur sagen, wenn beide vorhanden
s.Speak "Ich beginne mit den Herren.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
End If
r = 2
nameH = ws.Cells(r, 2).Text
Do While nameH <> ""
Debug.Print nameH
s.Speak nameH, 1
Do While s.Status.RunningState = 2
DoEvents
Loop
countH = countH + 1
r = r + 1
nameH = ws.Cells(r, 2).Text
Loop
Sleep 400
End If
' ===========================
' ===== DAMEN VORLESEN ======
' ===========================
If damenVorhanden Then
If herrenVorhanden Then
' Nur sagen, wenn beide vorhanden
s.Speak "Nun folgen die Damen.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
End If
r = 2
nameD = ws.Cells(r, 8).Text
Do While nameD <> ""
s.Speak nameD, 1
Do While s.Status.RunningState = 2
DoEvents
Loop
countD = countD + 1
r = r + 1
nameD = ws.Cells(r, 8).Text
Loop
Sleep 400
End If
' ===========================
' ===== ABSCHLUSSANSAGE =====
' ===========================
If countH > 0 And countD > 0 Then
s.Speak "Es sind " & countH & " Herren und " & countD & " Damen gemeldet.,1"
Do While s.Status.RunningState = 2
DoEvents
Loop
ElseIf countH > 0 Then
s.Speak "Es sind " & countH & " Herren gemeldet.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
ElseIf countD > 0 Then
s.Speak "Es sind " & countD & " Damen gemeldet.", 1
Do While s.Status.RunningState = 2
DoEvents
Loop
End If
End Sub