mein heutiges Problem besteht in der Nutzung der Find()-Funktion, ohne die Activate-Eigenschaft zu gebrauchen. Genauer gesagt möchte ich ein Find(...) über eine Tabelle jagen, ohne diese Tabelle zu aktivieren.
Der momentane (gekürzte) Quellcode sieht folgendermaßen aus (es geht darum, Inhalte zweier Tabellen anhand der in einem Array gesammelten Informationen zu vergleichen; InStr bzw. eine doppelte FOR-Schleife ist aufgrund der Datenmenge in jedem Fall zu langsam...):
...
For i = 2 To Tabelle5.UsedRange.Rows.Count
'frmSuche.lstVorgabe.Clear
'frmSuche.cmbGefunden.Clear
Globals.lblQuelleErmitteln (i)
finde = UCase(Trim(frmSuche.txtQuelle.Text))
If Not finde = "" Then
Dim abbruch As Boolean
Dim anfangszeile As Long
abbruch = False
anfangszeile = 0
Tabelle5.Cells(1, "A").Activate
Do While abbruch = False
Tabelle5.Cells.Find(what:=finde, after:=ActiveCell, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).Activate
If ActiveCell.Column = arrVerknuepfungen(0).indexquelle + 1 Then
If ActiveCell.Row >= anfangszeile Then
anfangszeile = ActiveCell.Row
For k = 0 To UBound(arrVerknuepfungen) - 1
If InStr(UCase(Trim(Tabelle7.Cells(j, arrVerknuepfungen(k).indexquelle).Text)), finde) Then
merk = merk + 1
End If
Next k
If merk = UBound(arrVerknuepfungen) Then 'Übereinstimmung gefunden
m = 4
Do While Not Trim(Tabelle3.Cells(m, "N").Text) = ""
m = m + 1
Loop
Tabelle3.Cells(m, "N") = j
Tabelle3.Cells(m, "O") = i
gefunden = gefunden + 1
End If
merk = 0
Else
abbruch = True
End If
End If
Loop
If gefunden > 1 Then
'Mehrere Übereinstimmungen gefunden
Else
'eine Übereinstimmung gefunden
End If
End If
Next i
Else
'
End If
End Function
Zeile 11 (Tabelle5.Cells(1, "A").Activate) gibt den Fehler "Die Activate-Methode des Range-Objektes konnte nicht ausgeführt werden" aus. Eigentlich möchte ich die Activate-Eigenschaft jedoch auch gar nicht wählen, da die Suche im Hintergrund ablaufen sollte. Jedoch verlangt die Find()-Funktion meines Wissens nach eine aktivierte Zelle...
Habt ihr eine Idee, wie ich Find() im Hintergrund ablaufen lassen kann?
Vielen Dank für eure Ideen
Stefan