HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Kaum Excel/VBA-Kenntnisse
Udo
20.06.2026 07:06:41
AW: Sprachausgabe in Excel
Anscheinend hats bei mir was es geht einfach nicht.

Trotzdem vielen dank an euch


Hier sind meine Makros, die funktionieren eigentlich alle perfekt, nur friert mein excel während der ansage ein und ich hab keine möglichkeit das abzubrechen.


https://www.herber.de/bbs/user/180833.txt

Ich muss wenn ich es will abbrechen können das wäre mein einziger wunsch


LG
Als Antwort auf diesen Beitrag
schauan
19.06.2026 22:57:35
AW: Sprachausgabe in Excel
... 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




Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.