Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
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
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wert in zweidimensionelem Array suchen

Wert in zweidimensionelem Array suchen
24.12.2003 14:17:47
Lupus
Hallo Excel-User,

folgends Makro (Index 078099) gibt die "Zeilenposition" des gesuchten Strings innerhalb eines Arrays zurück:


Sub Durchsuchen()
Dim arr As Variant
Dim iRow As Integer
arr = Range("A1:A16")   '"Irgendwas" steht in Zelle A8
iRow = Application.Match("Irgendwas", arr, 0)
If Err > 0 Then
MsgBox "Nicht gefunden"
Else
MsgBox "An " & iRow & " .Stelle gefunden"
End If
End Sub


Wenn jedoch das Array aus dem Bereich Range("A1:E16") besteht und der zusuchende Begriff "Irgendwas" ursprünglich in Zelle E10 befand, kommt es zu einem Laufzeitfehler 13 (Typen unverträglich).

Der Code sieht jetzt folgendermaßen aus:

Sub Durchsuchen()
Dim arr As Variant
Dim iRow As Variant
arr = Range("A1:D16")
iRow = Application.Match("Irgendwas", arr, 0) 'Laufzeitfehler 13
If Err > 0 Then
MsgBox "Nicht gefunden"
Else
MsgBox "An " & iRow & " .Stelle gefunden"
End If
End Sub


Wie müßte der Code richtig lauten?

Was sagt das 3. Argument von macht aus? Habe in der Windowshilfe nichts gefunden.

Gruß Lupus

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

Betreff
Datum
Anwender
Anzeige
AW: Wert in zweidimensionelem Array suchen
25.12.2003 01:29:58
Günther Abel
Hallo Lupus,

Match entspricht der Tabellenfunktion Vergleich
und funktioniert meines Erachtens (bin nicht ganz sicher)
nur in eindimensinalen Arrays (hier: spaltenweise) -
man müsste also die Spalten A-D einzeln in einer Schleife durchlaufen.

Die bessere Alternative wäre die Find-Methode,
dafür gibt es in der Online-Hilfe ein schönes Beispiel.
Achtung: Bei F1 auf find kann MS auch mal in der Tabfunktion landen -
also gezielt nach der Find-Methode suchen.

Viel Erfolg

Günther

P.S.: So sieht das Beispiel aus:

Beispiel zur Find-Methode

Dieses Beispiel findet alle Zellen im Bereich "A1:A500" des ersten Tabellenblatts, die den Wert 2 enthalten. Anschließend werden diese Zellen grau formatiert.

With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Anzeige
Lösung: Wert in 2-D Array suchen, aber ...
25.12.2003 13:02:22
Lupus
Hallo Günther,

danke für die Info, aber ich habe nach einer Möglichkeit gesucht Strings innerhalb eines Arrays zu suchen und nicht innerhalb eines Tabellenblattes. Die Daten für das Array kommen nicht aus einem Tabellenblatt, der Code (-> Range-Bereich) sollte nur zur Verdeutlichung meines Problems dienen.

Habe nun folgende, verbesserungswürdige jedoch schnell funktioniernde Lösung gefunden:

Option Explicit

Sub Durchsuchen()
Dim arr As Variant
Dim iRow As Integer, Zeile As Long, Spalte As Integer
arr = Range("A1:E32000") '.Value
For Zeile = 1 To 32000
For Spalte = 1 To 5
If "Irgendwas" = arr(Zeile, Spalte) Then  'stark optimierungswürdig
iRow = Zeile
End If
Next Spalte
Next Zeile
MsgBox "An " & iRow & ". Stelle gefunden"
End Sub


Da der Code in einer Userform eingebaut ist und der eigentliche Suchstring sich in einer Textbox befindet, würde ich lieber mit dem LIKE-Operator arbeiten, man könnte dann Wildcards in die Textbox mit eingeben.

Außerdem könnte es vorkommen, daß es mehrere Fundstellen gibt. Dann sollten die Datensätze, in denen sich der Suchstring befindet, in ein neues Array geschrieben werden bzw. in einer Combobox aufgelistet werden.

Wer Spaß am Tüfteln hat, kann mir / uns die lösung mal ins Forum stellen.

Ansonsten frohe Weihnachtstage

Gruß Lupus
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige