Word 2010 Makro - Pause - mit bel. Taste weiter

Hallo liebe Wissende,

in einem Makro wird mir ein Ergebnis angezeigt, das aber ganz schnell wieder verschwindet und praktisch unsichtbar ist, weil das Makro weiterläuft.

Gibt es einen Befehl, der das Makro vorübergehend anhält, und dass es dann nach einem beliebigen Tastendruck von mir bis zum Ende weiterläuft?

Auf der DOS-Ebene gibts die Funktion PAUSE, die genau das in Batchdateien bewirkt. Sowas suche ich.

Vielen Dank für eine freundliche Hilfe
Ludwig

Gibt es einen Befehl, der das Makro vorübergehend anhält, und
dass es dann nach einem beliebigen Tastendruck von mir bis zum
Ende weiterläuft?

Auf der DOS-Ebene gibts die Funktion PAUSE, die genau das in
Batchdateien bewirkt. Sowas suche ich.

Hallo Ludwig

Ich für mich brauche in solchen Situationen folgendes

  1. Etwas ganz „primitives“

    MsgBox „OK für weiter“

Die zwei folgenden Anweisungen reagieren nicht auf einen Tastendruck, sondern schalten eine Pause von einer bestimmten Länge ein.

  1. SLEEP

    Private Declare Sub Sleep Lib „kernel32“ (ByVal lngMilliseconds As Long)
    ’ Diese Deklaration muss ganz oben im Modul stehen

    Sub TEST1()
    'Dein Makro Teil 1
    Sleep 5000
    'Pausenlänge von 5000 Millisekunden oder 5 Sekunden
    'Dein Makro Teil 2
    End Sub

  2. PAUSE - DO EVENTS

    Sub TEST2()
    'Dein Makro Teil 1
    Call Pause(3)
    'In der Klammer werden Sekunden angegeben.
    'Dein Makro Teil 2
    End Sub

    Function Pause(lngDauer As Integer)
    Dim lngEnde As Long
    Dim lngZeit As Long
    lngZeit = CLng(Timer)
    lngEnde = lngZeit + lngDauer
    Do While lngZeit

    Je nachdem, um welche Meldungen es sich handelt, ist es schwierig, eine Pause in ein Makro einzubauen. Vielfach arbeitet Excel ganz stur:

    • Jetzt mach ich eine Meldung und schliesse sie sofort wieder
    • Und dann mach ich eine Pause gemäss Anweisung

    Ich hoffe, das eine oder andere hilft Dir.
    Viele Grüsse
    Niclaus

Hallo Niclaus,

herzlichen Dank für deine Hilfe. Was du als „primitiv“ bezeichnest, war eigentlich genau das, was ich suchte.
Aber jetzt habe ich ein anderes Problem.

Starte ich mit STRG+H die Funktion „suchen/ersetzen durch“, dann klappt das wunderbar, und zuletzt bekomme ich wunschgemäß angezeigt, wie oft etwas ersetzt wurde.

Will ich dasselbe mit einem Makro bewirken, läuft dieses ohne abschließende „Erfolgsmeldung“ durch und zeigt also nichts an. Dann - leider - nützt auch die MSG-Box mit „Weiter …“ nichts, obwohl diese brav aufpoppt. Ich habe sie an mehreren Stellen versuchweise einkopiert und zuletzt mit Debuggen/Einzelschrift gesehen, dass das Makro wie gesagt in der Tag gar keine Meldung ausgibt.

Wenn es nur immer so einfach wäre …

Nochmals Danke und freundlichen Gruß
Ludwig

Starte ich mit STRG+H die Funktion „suchen/ersetzen durch“,
dann klappt das wunderbar, und zuletzt bekomme ich wunschgemäß
angezeigt, wie oft etwas ersetzt wurde.

Will ich dasselbe mit einem Makro bewirken, läuft dieses ohne
abschließende „Erfolgsmeldung“ durch und zeigt also nichts an.

Grüezi Ludwig

Wenn ich in Word 2010 (aber das war auch schon in früheren Versionen so) per Makro Suchen/Ersetzen durchführe, erscheint am Ende in der Statusleiste (ganz unten links) für einen Moment die Meldung „x Aenderungen.“ Bei Dir nicht?

Ich habe hier ein Makro gebastelt (mit Google’s Hilfe). Mit diesem Makro wird beim ersten Durchlauf der Suchtext gezählt; beim zweiten Durchlauf wird der Suchtext ersetzt. Dieses Makro funktioniert bei mir nur für das ganze Dokument richtig. Deshalb am Anfang der Befehl „Selection.HomeKey Unit:=wdStory“

Sub Makro1()
z = 0: ingAnzahl = 0
start:
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
 .Text = "Franz"
 .Replacement.Text = "Hans"
 .Forward = True
 .Wrap = wdFindContinue
 .Format = False
 .MatchCase = False
 .MatchWholeWord = False
 .MatchWildcards = False
 .MatchSoundsLike = False
 .MatchAllWordForms = False
End With
If z = 0 Then
 Do While Selection.Find.Execute
 ingAnzahl = ingAnzahl + 1
 Loop
 MsgBox ingAnzahl & " Aenderungen"
 z = 1
 GoTo start
Else
 Selection.Find.Execute Replace:=wdReplaceAll
End If
End Sub

Ich hoffe, das hilft Dir einen Schritt weiter, und grüsse herzlich
Niclaus

Hi Niclaus,

hab vielen herzlichen Dank! Genau so, wie erträumt und erhofft.
Es funzt super!

Gruß
Ludwig

Genau so, wie erträumt

Da kann ich ja beruhigt schlafen heute Nacht!
Freut mich! Niclaus