Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Find()-Funktion ohne Activate

Forumthread: Find()-Funktion ohne Activate

Find()-Funktion ohne Activate
01.05.2003 22:46:04
Stefan
Werte EXCEL-Gemeinde,

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

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Find()-Funktion ohne Activate
01.05.2003 23:09:25
Hans T.

Hallo Stefan

Die Find-Methode braucht kein Activate. Du kannst sie genausogut als Funktion einsetzen:

Dim rngFound

Set rngFound = Tabelle5.Cells.Find(finde) '+ alle anderen Parameter

Sie gibt die erste Fundstelle als Range zurück. Über rngFound kannst du beliebig darauf zugreifen. Das ganze funktioniert auch, wenn Tabelle5 nicht aktiviert ist.

Gruss
Hans T.

Anzeige
Re: Find()-Funktion ohne Activate
04.05.2003 20:49:42
Stefan

Superklasse! Genau danach habe ich gesucht!!
Besten Dank!!!

;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige