Microsoft Excel

Herbers Excel/VBA-Archiv

Makro stoppen und wieder starten, wenn anderes Mak

Betrifft: Makro stoppen und wieder starten, wenn anderes Mak von: Anja
Geschrieben am: 23.10.2014 02:08:39

Hallo,

Ich habe folgendes Problem:

Ich habe ein Makro das auf die Eingaben reagiert. Es hat zwei Funktionen in meiner Datei. Im ersten Teil schreibt es den letzten eingeben Wert in Zelle AN 1. Der zweite Teil ist eine Suchfunktion. Sie arbeitet mit dem Autofilter, wenn man in eine bestimmte Zelle ein Wort oder Wortteil eingibt. Dann werden nur diese Daten angezeigt. Es klappt super.

Jetzt habe ich aber das Problem, das ich beim Kopieren und Einfügen von Zeilen dieses Makro auch auslöse, was zu langen Wartezeiten führt. Je nach Anzahl der eingefügten Zeilen läuft es ewig. Ich muss Zeilen einfügen um z.B. die Tabelle zu verlängern.

Ich hatte eine Lösung gefunden, die bei mir auf Excel 7 auch funktioniert, indem ich in meinen Einfüge-Button nachfolgenden Code eingefügt habe. In Excel 10 bekomme ich eine Fehlermeldung. Warum? Gibt es eine andere Möglichkeit zu verhindern, dass das Makro mit der Suchfunktion aktiviert wird, solange ein anderes Makro läuft. Also, wenn ich den Einfügen-Button betätige, dass das Suchmakro direkt angesprochen und ausgeschaltet wird und dann wieder angeschaltet wird, wenn das Einfügen abgeschlossen ist. Den Code für das mit der Suchfunktion habe ich weiter unten eingefügt.
Vielen Dank im Voraus!!!

Makro für Einfüge-Button:

Private Sub cmdEinfügen_Click()

Application.EnableEvents = False
 ActiveSheet.Paste
 Application.EnableEvents = True
 ActiveSheet.Protect Password:="???"
        
End Sub

Durch die Codezeile Application.EnableEvents = False wird das Makro mit der Suchfunktion nicht mehr ausgelöst, wenn ich Zeilen einfüge. Nach Beendigung des Einfügens wird das Suchmakro wieder aktiviert.( Application.EnableEvents = True)

Makro für Suchfunktion:
Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.Unprotect Password:="???"
On Error Resume Next

Dim objRange As Range, objCell As Range

Set objRange = Intersect(Range("C12:C30000"), Target)
If Not objRange Is Nothing Then
For Each objCell In objRange
    Range("AN1").Value = Target.Value
    
 Sheets("Einträge").Range("AN1").Copy Sheets("Auswahlliste").Range("AN1")
Next
End If



If Intersect(Range("SucheEintrag"), Target) Is Nothing Then Exit Sub
Select Case Target.Column
    Case 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 'Az, Name, IBAN, Info Externe,  _
Anmerkung, InsoG, ger. Az [enthält]
        If IsEmpty(Target) Then
            Selection.AutoFilter Field:=Target.Column
            Else
            Selection.AutoFilter Field:=Target.Column, Criteria1:="=*" & Target.Text & "*",  _
Operator:=xlAnd
            ActiveWindow.LargeScroll Down:=-6
            End If

            
    End Select
    
    ActiveSheet.Protect Password:="???"
    
End Sub

  

Betrifft: AW: Makro stoppen und wieder starten, wenn anderes Mak von: Hajo_Zi
Geschrieben am: 23.10.2014 07:17:31

schalte bei Change die Reaktion auf die Eingabe auch aus und ein.

GrußformelHomepage


  

Betrifft: AW: Makro stoppen und wieder starten, wenn anderes Mak von: Anja
Geschrieben am: 23.10.2014 21:26:49

Hallo Hajo,

danke für den Tipp. Ich werde das morgen mal ausprobieren, weil ich nur bei meiner Arbeit Excel 10 habe. Ich verstehe aber trotzdem nicht, warum es auf meinem Computer mit 07 problemlos läuft, aber auf dem Rechner mit Excel 10 nicht.
Ich werde mich morgen noch einmal melden.

Gruß

Anja


 

Beiträge aus den Excel-Beispielen zum Thema "Makro stoppen und wieder starten, wenn anderes Mak"