Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Pause einfügen wenn....

Forumthread: Pause einfügen wenn....

Pause einfügen wenn....
10.07.2025 22:56:54
Siegfried Pütz
Hallo in die Runde.
KI bekommt folgendes Problem nicht gelöst. Hoffe das jemand eine Lösung hat. Im Anhang habe ich einen funktionierenden Code.
Was ich nun möchte in der Logik: Ist nur ein Beispiel, sollte aber auf alle relevanten Zellen zutreffen: In der Zelle D1 füge ich einen Wert ein. Daraufhin wird Text to speech für Zelle K1 angesteuert. Das funktioniert. Ich möchte aber vermeiden, das nach jedem Eintrag die entsprechende Text to speech Funktion angesprochen wird. Meine Idee: Wenn, siehe Beispiel, in Zelle D4 ein Eintrag erfolgt, eine Pause von 7 Sekunden erfolgen. Wenn innerhalb der 7 Sekunden ein Eintrag in einer der Zellen K, soll text to speech nicht ausgeführt werden. Die entsprechenden Mainanweisungen sollen nicht geändert werden. Ich hoffe es ist Verständlich. Wenn noch etwas unklar, Bitte melden.
Grüße Euch
SiggiP

jetzt der Code:

#If VBA7 Then

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Private Sub Workbook_SheetChange(ByVal SH As Object, ByVal Target As Range)
On Error GoTo Ende

Dim speech As Object
Dim ausgabeText As String
Dim doSpeech As Boolean: doSpeech = False
Dim spaltenTitel As String
Dim schnapsZahlZelle As Range
Dim col As Long
Dim zeile As Long
Dim wertInZeile4 As Variant

If Target.Cells.Count = 1 Then
col = Target.Column
zeile = Target.Row

' === 1. Text je nach Spalte & gerader/ungerader Zeile ===
If Not IsEmpty(Target.Value) And zeile >= 4 And zeile = 33 Then
Select Case col
Case 4 ' Spalte D
If SH.Range("E4").Value > 0 Then
If zeile Mod 2 = 0 Then
ausgabeText = SH.Range("k1").Text
Else
ausgabeText = SH.Range("l1").Text
End If
doSpeech = True
End If

Case 11 ' Spalte K
If SH.Range("L4").Value > 0 Then
If zeile Mod 2 = 0 Then
ausgabeText = SH.Range("r1").Text
Else
ausgabeText = SH.Range("s1").Text
End If
doSpeech = True
End If

Case 18 ' Spalte R
If SH.Range("S4").Value > 0 Then
If zeile Mod 2 = 0 Then
ausgabeText = SH.Range("e1").Text
Else
ausgabeText = SH.Range("d1").Text
End If
doSpeech = True
End If
End Select
End If

' === 2. Logik für Rd*-Blätter ===
If SH.Name Like "Rd*" Then
If Not Intersect(Target, SH.Range("D4:D33,K4:K33,R4:R33,Y3:Y33")) Is Nothing Then
If Trim(Target.Value) > "" Then
col = Target.Column
spaltenTitel = SH.Cells(1, col).Value
wertInZeile4 = SH.Cells(4, col + 1).Value

' Schnapszahl prüfen
Select Case col
Case 4: Set schnapsZahlZelle = SH.Range("E4")
Case 11: Set schnapsZahlZelle = SH.Range("L4")
Case 18: Set schnapsZahlZelle = SH.Range("S4")
End Select

If Not schnapsZahlZelle Is Nothing Then
Select Case schnapsZahlZelle.Value
Case 111, 222, 333, 444
Call Main(3, "Schnapszahl")
Sleep 15000 ' Warte bis Sound abspielt
End Select
End If

' Weitere Main-Aufrufe
If wertInZeile4 = 0 Then
Call Main(2, spaltenTitel)
Else
Select Case Target.Value
Case 120, 140, 160, 170, 180, 100, 171, 26, 0, 41
Call Main(Target.Value, Target.Value)
Case Is > 100
Call Main(1)
End Select
End If
End If
End If
End If

' === 3. Sprache ausgeben (nach Main-Aufrufen) ===
If doSpeech Then
Sleep 1000 ' ? Pause von 2 Sekunden nach Main
Set speech = CreateObject("SAPI.SpVoice")
speech.Speak ausgabeText
Sleep 1
speech.Speak "Du bist dran."
End If


End If

Ende:
Set speech = Nothing
End Sub

Private Sub Workbook_SheetActivate(ByVal SH As Object)
SH.Range("D4").Select
End Sub
Anzeige

38
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pause einfügen wenn....
10.07.2025 23:23:25
daniel
Hi
es wäre schön, wenn der Code, den du uns bereit stellst, so vollständig wäre, dass wir ihn laufen lassen und dein Problem nachstellen können.
Falls das mit Code allein zu kompliziert wird, könntest du die Datei hochladen.
Dann kann man auch mal was ausprobieren und testen.
hier fehlt mir beispielsweise das Makro MAIN.

deswegen hier nur die allgemeine Beschreibung:

1. das Makro oder die Funktion, die verzögert ausgeführt werden soll, muss in ein allgemeines Modul
2. die Uhrzeit, zu der das Makro gestartet wird, muss in einer projektweit gültigen Variable hinterlegt werden, da mit sie Makroübergreifend verfügbar ist (Deklaration in einem allgemeinen Modul, oberhalb der Makros als Public.

also in einem Allgemeinen Modul
Option Explicit

Public StartZeit as Date

Sub MakroX()
...
End sub


der verzögerte aufruf erfolgt dann so:

StartZeit = Now + Timeserial(0, 0, 7)

Application.Ontime StartZeit, "MakroX"


um den Aufruf zurückzunehmen, dann dieser Code:
if StartZeit > Now then

Application.Ontime StartZeit, "MakroX", Schedule:=False


so müsstest du dir das in dein Makro einbauen.

Gruß Daniel
Anzeige
AW: Pause einfügen wenn....
10.07.2025 23:36:11
Siegfried Pütz
Hallo Daniel,
Danke erstmal. Wenn Dir die Main Datei helfen würde, kann ich anhängen. Mit dem Einbauen habe ich heute, bedingt durch KI = CHAT GPT, so meine Probleme. Bin froh das ich vorher eine funktionierende Datei gespeichert hatte.
Ich sende mal die entsprechende Main. Die Datei im ganzen, mit den dazu gehörigen Wav Sounds ist zu groß. Ich weiß, über Umwege kann ich einen Link posten, so das Du zugriff auf die Datei bekommst, hat aber in einer früheren Anfrage nicht funktioniert.

Gruß,
SiggiP

Anhang

Option Explicit

Private Declare PtrSafe Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Public Sub Main(ByVal lngTMP As Long, Optional ByVal strName As String)
Dim objSpeech As Object
Set objSpeech = CreateObject(Class:="SAPI.SpVoice.1")
Set objSpeech.Voice = objSpeech.GetVoices.Item(0)
Select Case lngTMP
Case 1
Call objSpeech.Speak("über einhundert")
Application.Wait Now + TimeValue("00:00:01")
Call objSpeech.Speak("super")
Case 2, 3, 120, 140, 160, 170, 180, 100, 171, 26, 0, 41
sndPlaySound 0, SND_ASYNC
sndPlaySound ThisWorkbook.Path & Application.PathSeparator & strName & ".wav", SND_ASYNC Or SND_NODEFAULT
End Select
Set objSpeech = Nothing
End Sub
Function fncSchnapszahl(ByVal rngCell As Range) As Boolean
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
'objRegEx.Pattern = "^(.)\1+$"
objRegEx.Pattern = "^(.)\1{2}$"
fncSchnapszahl = objRegEx.Test(rngCell.Value)
End Function
Anzeige
AW: Pause einfügen wenn....
10.07.2025 23:57:51
daniel
kann dir die KI nicht sagen, wo du das einbauen musst?
für jemanden, der dir so tolle Codes liefert (ich könnte das nicht) sollte das doch kein Problem sein.

(Sorry, aber sich Codes von der KI schreiben lassen, und dann im Forum nachfragen wenn es nicht funktioniert, ist wie im Internet ein Fahrrad kaufen und dann für den Repearturservice doch zum Händler gehen)

aber wenn du deinen Code kennst , will ich nicht so sein.
Wo steht denn die Sprachausgabe, die verzögert ausgegeben werden soll?
Gruß Daniel

Anzeige
AW: Pause einfügen wenn....
11.07.2025 00:09:46
Siegfried Pütz
Hallo Daniel,
ich habe das mal mit KI probiert um hier im Forum nicht zu nerven. Diverse Beiträge hier im Forum blieben teilweise Unbeantwortet bzw. nur kommentiert, ohne eine Lösung zu geben. Du hast mir ja schon einiges Beantwortet und Lösungen mitgeteilt, dafür bin ich Dankbar. Auch andere hier im Forum haben mir schon viel geholfen. Auch denen, Danke.
TEXT TO SPEECH, ganz unten im WORKBOOK:
Gruß,
SiggiP
Anzeige
AW: Pause einfügen wenn....
11.07.2025 00:31:40
Daniel
"ich habe das mal mit KI probiert um hier im Forum nicht zu nerven. "

Ja schön, aber jetzt nervst du trotzdem das Forum. Es ist auch immer recht anstrengend, sich in Codes die man nicht kennt, einzulesen, manchmal ist es einfacher ,sich selber was zu schreiben.

Aber egal.

So ,wenn du diese Zeile gefunden hast, die die Sprachausgabe veranlasst, dann nimmst du diese Zeile und verlagerst sie in ein neues Makro in einem allgemeinen Modul.

Im Aufrufenden Makro rufst du dann diese Makro mit Call auf (analog dem Call Main, was du ja schon hast)

Mach das erstmal, und wenn dass dann funktioniert, schauen wir uns ab, wie man den verzögerten Aufruf einbaut.
Anzeige
AW: Pause einfügen wenn....
11.07.2025 00:41:55
Siegfried Pütz
Hallo Daniel.
Ich danke Dir für deine Aufrichtigkeit.
Ich belasse es so wie es ist. Deinen Vorschlag habe ich befolgt, kommt aber eine Fehlermeldung.
OK: Ich Danke Dir.
Gruß,
SiggiP
AW: Pause einfügen wenn....
11.07.2025 01:31:00
Daniel
Naja was hast du denn gemacht?
Wo kommt die Fehlermeldung?

Ich helfe dir ja gerne,wenn du selber was machst.
Aber ich habe keine Lust, der Ausputzer für die KI zu sein.
Anzeige
AW: Pause einfügen wenn....
11.07.2025 01:45:02
Siegfried Pütz
Hallo Daniel,
weshalb ich KI verwendet habe, wurde ja schon begründet. Sehe das nicht als Problem. Habe nur getestet. Wollte nur mal sehen, was KI von sich gibt.
Wie Du schon mehrmals feststellen musstest, bin ich in VBA kein großes Genie. In der Anlage sende ich Dir den Code von text to speech, den ich in ein neues Modul einfügen sollte. Dann kommt folgende Fehlermeldung: Fehler beim Kompilieren... Außerhalb einer Prozedur ungültig.
Ich weiß jetzt schon das etwas fehlt.
Kannst ja mal schauen.
Gruß,
SiggiP

        ' === 3. Sprache ausgeben (nach Main-Aufrufen) ===

If doSpeech Then
Sleep 1 ' ? Pause von 2 Sekunden nach Main
Set speech = CreateObject("SAPI.SpVoice")
speech.Speak ausgabeText
Sleep 1
speech.Speak "Du bist dran."
End If


Anzeige
AW: Pause einfügen wenn....
11.07.2025 02:22:16
Daniel
Wie gesagt, wenn du Hilfe vom Forum willst, dann zeig was du gemacht hast.
Wen DU VBA lernen willst, bekommst du sicherlich Hilfe.

du hast keine Anlage gesendet.
AW: Pause einfügen wenn....
11.07.2025 02:26:06
Siegfried Pütz
Hallo Daniel,
der Code....
Gruß,
SiggiP

' === 3. Sprache ausgeben (nach Main-Aufrufen) ===
If doSpeech Then
Sleep 1 ' ? Pause von 2 Sekunden nach Main
Set speech = CreateObject("SAPI.SpVoice")
speech.Speak ausgabeText
Sleep 1
speech.Speak "Du bist dran."
End If


 ' === 3. Sprache ausgeben (nach Main-Aufrufen) ===

If doSpeech Then
Sleep 1 ' ? Pause von 2 Sekunden nach Main
Set speech = CreateObject("SAPI.SpVoice")
speech.Speak ausgabeText
Sleep 1
speech.Speak "Du bist dran."
End If

Anzeige
AW: Pause einfügen wenn....
11.07.2025 09:47:45
Daniel
Das ist der Code, der die Sprachausgabe erzeugt:

Set speech = CreateObject("SAPI.SpVoice")
speech.Speak ausgabeText
Sleep 1
speech.Speak "Du bist dran."


Diesen musst du als eigenständiges Makro schreiben und dann an dieser Stelle dieses Makro aufrufen.

Soweit verstanden?
Anzeige
AW: Pause einfügen wenn....
11.07.2025 13:10:15
Siegfried Pütz
Hallo Daniel,
Deinen zuletzt beschriebenen Code bzw. Erklärung habe ich nicht kapiert? :-(
Ich habe den Link zu der Datei mal gepostet. Ob die Sounds abgespielt werden, weiß ich nicht. Bei mir laufen die, habe den Link getestet und im Download Ordner geöffnet (in Diesem sind ja keine Wav. Dateien abgelegt). Kannst ja mal testen.
Nochmal eine kurze Erklärung: So wie es ist läuft alles bestens. Um zu verhindern das jedes mal (Name mit du bist dran) abgespielt wird, sollte der Aufruf erst nach 7 Sekunden geschehen. Wenn in der Zwischenzeit ein Eintrag in D, K oder R getätigt werden, dann soll Name mit du bist dran nicht erfolgen. Die Pausen sind gewollt, gerade nach "Schnapszahl", müssen ja dann erst einen "Kurzen" trinken.
In der Hoffnung das Du das hinbekommst,
Grüße Dich,
Siggi






https://drive.google.com/file/d/1icwkfsTslQBmy6h_800f3KyGjs87da9A/view?usp=drive_link
Anzeige
AW: Pause einfügen wenn....
11.07.2025 13:24:33
daniel
naja, du musst das hinbekommen, nicht ich.
Ist deine Datei.

und der Link erfordert einen Zugriff, denn ich nicht habe.
lade doch einfach die Datei hier im Forum hoch und mach es nicht unnötig komplizert.
AW: Pause einfügen wenn....
11.07.2025 14:40:37
daniel
Hi
die folgende Datei enthält, was du brauchst.
bei Eingabe in die Spalte C wird das Makro gestartet, welches mit 7 sekunden verzögerung den Erinnerungstext spricht.
wird in der Zwischenzeit in Spalte D, K, oder R was eingegeben, wird die Erinnerung nicht gesprochen.
das müsstest du dann in dein Makro entsprechend einbauen.
https://www.herber.de/bbs/user/178066.xlsm
Gruß Daniel
Anzeige
AW: Pause einfügen wenn....
11.07.2025 16:05:17
Siegfried Pütz
Hallo Daniel,
erst mal Danke für deine Hilfe. Meine Fragen, Du weißt das ich kaum Ahnung habe, aber: den Code ins Workbook, wenn ja wo platzieren? In einem Modul einfügen? Oder sonstigen Ort?
Gruß,
SiggiP

AW: Pause einfügen wenn....
11.07.2025 20:19:02
daniel
ganz schön kompliziert.
wie soll ich mich da reinarbeiten?
warum hast du so viele Module und warum sind davon so viele leer?
lösche erstmal die leeren Module und die, die nur Code enthalten, den du nicht benötigst
und warum sind 5 leere Formulare in der Datei?
räum da erstmal auf.
Anzeige
AW: Pause einfügen wenn....
11.07.2025 20:26:57
Siegfried Pütz
ok.
AW: Pause einfügen wenn....
11.07.2025 20:43:59
daniel
prinzipiell würde ich das Modul verwenden, indem schon deine "Sub Main" drinsteht.
dann hast du die für die Sprachausgabe verwendeten Makros zusammen in einem Modul.
Du kannst auch mehrere Makros in ein Modul schreiben.
Mehrere Module würde ich nur verwenden, wenn ich viele Makros habe und diese für eine bessere Übersichtlichkeit in Gruppen zusammen stellen will.
Aber dann sollte man die Module auch entsprechend benennen.
Gruß Daniel
Anzeige
AW: Pause einfügen wenn....
11.07.2025 20:56:46
Siegfried Pütz
*?:-(xyz?#.....mir qualmt der Kopf...lassen wir es beim alten.
Danke für Deine Erklärungen, aber ist mir zu viel. Einige leichte Makros habe ich selber erstellt, davon die Meisten per Makro erstellen. Was Workbook, Main usw.....0 Ahnung.

Also, nochmals vielen Dank.
Gruß,
SiggiP
AW: Pause einfügen wenn....
11.07.2025 21:28:28
daniel
"Main" ist der Name eines Makros, das du verwendest. Im Code steht irgendwo "Call Main"
also muss irgendwo in denn vielen allgemeinen Modulen ein Makro vorhanden sein, daß so heißt.
Wenn du nicht mal deine eigenen Makros in deiner Datei findest, solltest du erstmal die Basics lernen, bevor du dich mit so komplexen Codes befasst.
Anzeige
AW: Pause einfügen wenn....
11.07.2025 21:38:10
Siegfried Pütz
Main, Workbook weiß ich, die Makros weiß ich aufzurufen. Ob "in Modul1" oder in "Main" eintragen soll, oder in neues Modul einfügen. Das würde ja schon helfen.
Belassen wir es dabei.
Gruß,
SiggiP
AW: Pause einfügen wenn....
11.07.2025 21:54:08
daniel
es gibt kein "Main" wo du irgendwas eintragen kannst.
es gibt nur Module
es es gibt die Module der Excelobjekte (Tabellennblätter, DieseArbeitsmappe), da kommen die Makros rein, die bei bestimmten Aktionen automatisch ausgeführt werden sollen, und es gibt die allgemeinen Module. Da kommen die sonstigen Makros rein.
das sind diese und da muss das Makro "Erinnerung" und beiden Variablen rein.
Userbild

in welches deiner vielen Module du dann das Makro reinschreibst, ist eigentlich egal.
diese allgemeinen Module funktionieren wie ein großes Modul.
deine anderen Makro für die Sprach- und Tonausgabe, stehen übrigens im Modul44. da würde ich das andere auch rein tun, damit du sie beisammen hast.
Anzeige
AW: Pause einfügen wenn....
11.07.2025 22:05:30
Siegfried Pütz



Userbild
AW: Pause einfügen wenn....
11.07.2025 22:11:54
daniel
komische Ansicht.
die benutze ich nicht
schalt mal auf die andere mit Ordnern um
oder vergleiche die Namen oder die Symbole vor den Namen.

AW: Pause einfügen wenn....
11.07.2025 22:30:07
Siegfried Pütz
Sorry, so wurde mir das erklärt. Woher die ganzen, leeren Module herkommen, keine Ahnung`? Wie schon mal geschrieben habe ich alles hier im Forum erfahren. Der eine erklärt es so...der Nächste anders. Der eine sendet mir einen überarbeiten Code, der Andere eine überabeitete Datei. Wenn ich zu einem Problem eine überarbeitete Datei erhalten habe, konnte ich diverse Codes in anderen Dateien gleicher Art, nach Bearbeiten (ergänzen, löschen usw,) verwenden. Habe jetzt alle leeren Module entfernt. Tabellen beziehen sich, denke ich, auf die Anzahl der Tabellenblätter der Datei?
Wenn ich 40 Jahre jünger wäre, würde ich mich mehr für VBA interessieren, oder anders gesagt mich mehr damit vertraut machen. Doch mit 67 fällt mir das schwer. Aber es ist sehr interessant mit Excel, Formeln, VBA zu arbeiten.
Grüße Dich,
SiggiP
Anzeige
AW: Pause einfügen wenn....
12.07.2025 00:10:39
daniel
dann hast du doch jetzt die Zeit, dich intensiver mit VBA zu beschäftigen und das ganze mal so zu lernen, dass du auch damit was machen kannst, statt immer nur andere anzubetteln, dass sie dir was schreiben.
Wenn du was tolles haben willst, ohne selber dafür zu arbeiten, solltest du einen Profi beaufragen.
Anzeige
AW: Pause einfügen wenn....
12.07.2025 00:47:42
Siegfried Pütz
Hallo Daniel,
lassen wir das Ganze bleiben. Habe keine Lust auf dumme Sprüche. Betteln möchte ich nicht. Habe für Hilfe gebeten, nicht um mich hier runtermachen zu lassen. Tut mir leid für diejenigen die mich unterstützt und geholfen haben. Zukünftig werde ich hier nicht mehr fragen wenn ich etwas HILFE benötige.
Also Servus,
Gruß,
SiggiP
Anzeige
AW: Pause einfügen wenn....
12.07.2025 03:35:35
daniel
naja, Hilfe hast du von mir bekommen
schau dir die ganze Zeit an, die ich für dich geopfert habe
aber du gibst auf, wenn du selber mal ein bisschen mitdenken musst.
das ist schade.
Warum gibst du jetzt auf? Nur weil du verstehen sollst, was du machst?
AW: Pause einfügen wenn....
12.07.2025 03:49:48
Siegfried Pütz
sagen wir mal so: ich habe dir eine Beispieldatei hochgeladen. Hast gemeckert über leere Module, hast mich als Bettler dar gestellt, müsste jetzt alle Nachrichten durch blättern. Wenn du nur kritisierst, was soll ich denn noch dazu sagen. In den ganzen Stunden: Hättest mal deine ganzen Ergänzungen, Module usw. in der Datei eingetragen und wieder hochgeladen, hätte ich sehen können was geändert oder dazu gekommen ist. Daraus hätte ich lernen können!
Anzeige
AW: Pause einfügen wenn....
12.07.2025 04:23:30
Daniel
Ich habe dir immer erklärt, was du tun musst.
Du bist einfach zu faul, auch nur das kleinste bisschen selbst zu machen. Bei den Code, den du schon hast, müsstest du dieses Basiswissen haben. Ich habe dir eine Datei geschickt, die die Funktionalität hat, die du brauchst
Wenn du lernen willst, schaust du dir die an und versucht, das in deine Datei einzubauen.
Wenn ich dir das in deine Datei einbaue, wirst du dich freuen, dass du es hast aber es dir nicht weiter anschauen, denn das hat du bei den anderen Codes auch nicht gemacht, sonst wusstest du besser bescheid wie dein Code funktioniert.
Anzeige
AW: Pause einfügen wenn....
11.07.2025 17:18:50
daniel
dafür, dass du keine Ahnung hast, hast du ziemlich komplexen Code produziert (wie du ihn produziert hast, ist mir egal, für mich kommt er von dir)
wo die Codes rein müssen, siehst du doch in der Beispieldatei.
das Makro zum Aufrufen der Sprachausgabe muss in ein allgemeines Modul
das Application.Ontime zum Aufruf der Sprachausgabe muss dann dort hin, wo du bisher die Sprachausgabe hattest (Application.Speak), und dir Rücknahme dann bei dem Ereignis, bei welchem das zurückgenommen werden muss. Das weißt du besser als ich, denn es ist dein Makro, dass du geschrieben hast.
Wenn nicht, frag den von dem du das Makro hast. Er hat es dir ja auch geschrieben, warum sollte er dir nicht weitere Fragen beantworten können.
Gruß Daniel
Anzeige
AW: Pause einfügen wenn....
11.07.2025 17:45:41
Siegfried Pütz
Hallo Daniel,
alle Dateien mit VBA wurden HIER im Forum angefragt und von diversen Personen, u.a. auch von Dir, erstellt. Das ist zwar schon eine Weile her, aber ich habe alle Anfragen und Antworten gespeichert, sowie die VBA´s in einem separaten Ordner als Bas abgelegt. Soviel zum Thema komplexe Codes.
Jetzt versuch ich mal deine Schritte zu befolgen. Wenn ich es hinbekomme, melde ich mich. Wenn nicht; melde ich mich auch :-)
Nochmals einen schönen Gruß,
Siggi
Anzeige
AW: Pause einfügen wenn....
11.07.2025 18:58:21
daniel
Hi
also nochmal für dich, jetzt etwas ausführlicher, damit das auch mit den verschiedenen Namen klappt, denn hier braucht man eine Parameterübergabe an das Sprachmakro, was die Sache etwas komplizierter macht:

1. in ein allgemeines Modul (Modul1) muss dieses Makro:

Sub Erinnerung(txt1, txt2)

Set Speech = CreateObject("SAPI.SpVoice")
Speech.Speak txt1
'Sleep 1
Speech.Speak txt2
End Sub


und ganz oben unter Option Explicit:
Public StartZeit as Date

Public Aufruf as string


2. der Aufruf kommt an diese Stelle in deinem Change-Event-Makro, dh du musst das hier:
        ' === 3. Sprache ausgeben (nach Main-Aufrufen) ===

If doSpeech Then
Sleep 1000 ' ? Pause von 2 Sekunden nach Main
Set speech = CreateObject("SAPI.SpVoice")
speech.Speak ausgabeText
Sleep 1
speech.Speak "Du bist dran."
End If


ersetzen durch
' === 3. Sprache ausgeben (nach Main-Aufrufen) ===

If doSpeech Then
Sleep 1000 ' ? Pause von 2 Sekunden nach Main
Aufruf = "'Erinnerung """ & ausgabeText & """, ""Du bist dran.""'"
StartZeit = Now + TimeSerial(0, 0, 7)
Application.Ontime StartZeit, Aufruf
End If


3. die Rücknahme erfolgt dann mit diesem Code:
if Startzeit > Now then Application.Ontime StartZeit, Aufruf, Schedule:=false

der muss halt in das Change-Makro dahin, da wo du abfragst in welche Spalte was eingegeben wurde, an die richitige Stelle, aber dafür kenne ich dein Makro und deinen Ablauf zu wenig.

Anzeige
AW: Pause einfügen wenn....
11.07.2025 19:26:26
Siegfried Pütz
Hallo Daniel,
"ganz oben unter Option Explicit" habe ich versucht einzubringen, aber in welcher VBA?
Mit "die Rücknahme erfolgt dann mit diesem Code" weiß ich auch nicht wohin?

Ich Danke Dir für dein Bemühen mir zu Helfen.
Grüße Dich,
SiggiP
AW: Pause einfügen wenn....
11.07.2025 19:41:49
daniel
Frage 1:
schrieb ich doch, im allgemeinen Modul (Modul1)

Frage 2:
ja ich auch nicht.
was genau soll denn die Rücknahme bewirken?
du hast doch mehrere Abfragen drin, die prüfen, in welche Spalte die Eingange erfolgt ist (Select Case col)
da musst du dir die passende raussuchen oder eine weitere Abfrage einfügen.

und da du bisher die Datei noch nicht hochgeladen hast, kann ich da auch nichts testen.
und auch wenn du dir den Code von anderen schreiben lässt, den Code verstehen und wissen, wo was passiert, solltest du schon.

Anzeige
AW: Pause einfügen wenn....
11.07.2025 19:57:41
Siegfried Pütz
Sorry, hatte eben eine Benachrichtigung bekommen und Dir die Freigabe erteilt habe. Wusste ja nicht, ob Du schon die Datei angeschaut hast? Ich versuche ja Deine Anweisungen zu befolgen, doch wie es aussieht ohne Erfolg. Wenn ich dich nerve, sage Bescheid, dann belasse ich, so wie es ist.
Gruß,
Siggi
Anzeige
AW: Pause einfügen wenn....
11.07.2025 20:03:55
daniel
naja, du nervst, weil du einerseits schreibst, dass du keine Ahnung hast, dann aber doch irgendwie komplizierten Code hast.
das mit der Freigabe bring mir nicht viel, die ist bei mir auch noch nicht angekommen.
lade die Datei hier im Forum hoch, dann braucht niemand eine Freigabe oder ähnliches.
Anzeige

Forumthreads zu verwandten Themen

Anzeige