Makro zu langsam
08.12.2018 06:52:34
Peter
ich habe eine fast fertige Datei. Es besteht nur noch ein kleines Problem.
Wenn ich den Commandbutton6 drücke dauert die Bearbeitung relativ lange. Könnt ihr mir bitte helfen, die Arbeitszeit des Makros zu verkürzen.
Es werden die Werte von den beiden Tabellen 1 und 4 in SpalteS miteinander verglichen. Ich vermute, dass es dieser Teil des Makros ist, welcher lange dauert. Hier das Makro:
'gewählte E-Mail-Adressen auflisten und in Tabelle1 markieren
Private Sub CommandButton6_Click()
'Anfang Verkettung
Dim wb As Workbook 'benötigt für aktuelle Workbook
Dim WS4 As Worksheet 'benötigt für E-Mail Programm
Dim lz2 As String 'benötigt für Combobox1 E-Mail Programm
Dim lz As String
Dim I As Long, strZusammen As String 'benötigt für Verkettung
Set wb = ThisWorkbook 'benötigt für für aktuelle Workbook
Set WS4 = wb.Sheets("Tabelle4") 'benötigt für Combobox1 E-Mail Programm
With WS4
.Range("AF2").ClearContents
For I = 2 To .Cells(.Rows.Count, 19).End(xlUp).Row
If strZusammen = "" Then
strZusammen = .Cells(I, 19)
Else
strZusammen = strZusammen & "," & .Cells(I, 19)
End If
Next I
.Range("AF2") = strZusammen
End With
WS4.Range("AF2").EntireColumn.AutoFit
'Übertrag der gewählten E-Mails in Textbox1
Me.TextBox3 = Sheets("Tabelle4").Range("AF2").Value
'Ende Verkettung
'Anfang Wert suchen und x in Tabelle1 einfügen
Dim Zeile As Long
Dim varWert As Variant
Dim rngFound As Range
Dim wks_1 As Worksheet, wks_2 As Worksheet
Set wks_1 = ActiveWorkbook.Worksheets("Tabelle1")
Set wks_2 = ActiveWorkbook.Worksheets("Tabelle4")
With wks_1
'Anfang Autofilter ohne Meldung entfernen
On Error Resume Next
.ShowAllData
On Error GoTo 0
'Ende Autofilter ohne Meldung entfernen
For Zeile = 2 To .Cells(.Rows.Count, 19).End(xlUp).Row
If .Cells(Zeile, 19).Text "" Then
varWert = .Cells(Zeile, 19).Value
Set rngFound = wks_2.Range("S:S").Find(what:=varWert, LookIn:=xlValues, lookat:= _
_
xlWhole)
If rngFound Is Nothing Then
.Cells(Zeile, 26).ClearContents
Else
.Cells(Zeile, 26).Value = "x"
End If
End If
Next
End With
'Ende Wert suchen und x in Tabelle1 einfügen
CommandButton6.Enabled = False
ListBox2.SetFocus
End Sub
Kann es sein, dass dieser Teil:Set rngFound = wks_2.Range("S:S").Find(what:=varWert, LookIn:=xlValues, lookat:= _
xlWhole)
die Geschwindigkeit beeinflusst?
Ist es ggf. möglich und mit Zeitvorteil, wenn statt wks_2.Range(S2:S" & letzteZeile) einzufügen bzw. statt letzte Zeile z. B. S1000.
Besten Dank für eure Hilfe.
Gruss
Peter