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