Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
248to252
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
248to252
248to252
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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.

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige