VBA Finden-Funktion
18.11.2014 23:16:16
HaWe
habe mal wieder ein VBA-Problem mit der "Find"-Funktion.
In so einer (vereinfachten) Tabelle mit Spalte A und B OHNE Spaltennamen(!!), die über VBA erstellt wird, soll nach einem Eintrag in Spalte "A" gesucht werden (Die Punkte vor 'A' und 'B' sollen nur als Trenner zur Übersicht fungieren, da ich nicht weiss wie man hier vernünftige TABs setzen kann):
...A....B
1 1 tab1
2 1 tab2
3 1 tab3
4 3 xxx1
5 3 xxx2
6 4 yyy5
7 4 zzz1
8 4 kkk9
9 1 mmm1
Das Makro lautet so:
Option Explicit
Dim c As Range
Sub finden_was()
With ActiveSheet.Columns(1)
'Set c = .Find(Cells(i, 1), LookIn:=xlValues)
Set c = .Find(Cells(9, 1), LookIn:=xlValues)
'Eintrag gefunden
If Not c Is Nothing Then
MsgBox "gefundene Tabelle Nr.: " & c
MsgBox "gefunden in Zeile: " & c.Row
Else
MsgBox "nichts gefunden"
End If
End With
End Sub
Es gilt eigentlich die auskommentierte Zeile mit 'Set c, die nur zum Testen durchdie nächste Zeile ersetzt wurde, damit man in '.Find(Cells(9,1), ....' mit dem
Zeilenwert 9 oder ähnlich spielen kann.
Ziel: Es soll die "1" aus Zeile 9, Spalte 1 in der Spalte 1 beginnend mit Zeile 1
gefunden werden und der erste gefundene Eintrag (Zeile) ausgegeben werden, in dem
Fall also "1" für Zeile 1.
Wenn Zeile 9 in Cells(9,1) ausgewählt ist, liefert die Suchfunktion ein falsches
Ergebnis, nämlich "2" und nicht "1". Bei einem anderen Wert, z.B. 8 (Cells(8,1))
wird das richtige Ergebnis, nämlich "6" ausgegeben.
Wie ist die Logik von "Find" und wie muss der Algorithmus geändert werden?
Hoffentlich ist das so verständlich
Vielen Dank für Eure Hilfe
HaWe