Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Finden-Funktion

Betrifft: VBA Finden-Funktion von: HaWe
Geschrieben am: 18.11.2014 23:16:16

Hallo liebe VBA-Spezialisten und Helfer,
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 durch
die 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

  

Betrifft: AW: VBA Finden-Funktion von: Hajo_Zi
Geschrieben am: 19.11.2014 07:05:24

gebe die letzte Zelle in der Spalte a.
Set C = .Find(Cells(9, 1), Range("A9"), LookIn:=xlValues)

GrußformelHomepage
Abspann kurz


  

Betrifft: AW: VBA Finden-Funktion von: HaWe
Geschrieben am: 19.11.2014 21:02:22

Hallo Hajo,
ganz herzlichen Dank für diesen einfachen Supertip!!

Habe ich das in der VBA/Excel-Hilfe überlesen oder gibt solche wichtigen Tips dort nicht? - Zum Glück gibt es ja dieses Forum.

Gruß

HaWe