Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Suchen und Zeilen- und Spaltennr. übergeben

1,488 views
Skip to first unread message

Sven

unread,
Oct 12, 2006, 5:34:02 AM10/12/06
to
Hallo,

ich suche zwei Zahlen in einer Datei mit über 5000 Zeilen. Die Zahlen sind
eindeutig und stehen in Spalte A.
Ich suche die Zahlen mit Cells.Find
Wie bekomme ich die Werte für die Zeilen und Spalten raus. Ich benötige
diese Werte auf jeden Fall einzeln, weil ich später um die gefunden Felder
noch ein paar Sachen ändern muss und diese mit Cells(x,y) anspreche.
Danke schonmal vorab.

Gruß
Sven

Sven

unread,
Oct 12, 2006, 5:35:01 AM10/12/06
to

Claus Busch

unread,
Oct 12, 2006, 5:51:35 AM10/12/06
to
Hallo Sven,

mit Cells.Find wird die gefundene Zelle aktiviert. Dann kannst du es z.B.
so abfragen:
MsgBox "Der gesuchte Begriff steht in " & Chr(10) & "Zeile " _
& ActiveCell.Row & Chr(10) & "Spalte " & ActiveCell.Column

--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de

Melanie Breden

unread,
Oct 12, 2006, 6:06:48 AM10/12/06
to
Hallo Sven,

Sven schrieb:

speicher die gefundene Zelle in einer Range-Variable, dann kannst du über die
Row- und Column-Eigenschaft die Zeile und Spalte ermitteln:

Public Sub SucheZahlen()
Dim rngFind As Range

Set rngFind = Worksheets("Tabelle1").Columns("A").Find("123456", LookAt:=xlWhole)

' Wenn Zelle gefunden wurde
If Not rngFind Is Nothing Then
' Zeile
Debug.Print rngFind.Row
' Spalte
Debug.Print rngFind.Column

' direkt referenzieren
Cells(rngFind.Row, "D").Value = "Test"
End If
End Sub


Mit freundlichen Grüssen
Melanie Breden

--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung

Melanie Breden

unread,
Oct 12, 2006, 6:08:07 AM10/12/06
to
Hallo Claus,

Claus Busch schrieb:


> mit Cells.Find wird die gefundene Zelle aktiviert.

aber nur dann, wenn man sie explizit mit SELECT markiert, was man
ja nicht machen sollte!

k.oppel

unread,
Oct 12, 2006, 6:06:02 AM10/12/06
to

"Sven" schrieb:

Hallo Sven,

Was machst du den mit den gefundenen Feldern? Schreibst du diese in eine
"Range"-Variable oder markierst diese?
Wenn ja, dann hast du an der gefundenen Zelle die Möglichkeit die
Eigenschaften .Row und .Column dir seperat ausgeben zu lassen - das sollte
das sein, was du suchst.

Gruß - Kai

Sven

unread,
Oct 12, 2006, 6:23:03 AM10/12/06
to

"k.oppel" wrote:


Hi Kai,
danke für deine schnelle Antwort.
Ja die Spalten und Zeilen sollen in eine Range-Variable.
Wie geb ich das denn separat aus?

Claus Busch

unread,
Oct 12, 2006, 6:41:01 AM10/12/06
to
Hallo Melanie,

Am Thu, 12 Oct 2006 12:08:07 +0200 schrieb Melanie Breden:

> Hallo Claus,
>
> Claus Busch schrieb:
>> mit Cells.Find wird die gefundene Zelle aktiviert.
>
> aber nur dann, wenn man sie explizit mit SELECT markiert, was man
> ja nicht machen sollte!

ja, richtig. Ich habe nicht weitergedacht, weil ich nur suche, wenn ich
auch dort hin möchte und dann ist Select angebracht.

k.oppel

unread,
Oct 12, 2006, 7:13:02 AM10/12/06
to

"Sven" schrieb:

Hallo Sven,

Du kannst in der Excel VBA - Hilfe dir auch das Beispiel zur Find-Methode
dazu anschauen.
Aber das Prinzip ist so, dass du dir deine Variable als Range(-objekt)
deffinierts und dann über Set den Inhalt (Suchergebnis) zuordnest:

Sub Findezelle
Dim spalte, zeile as Long
Dim zellenfund as Range
...
Set zellenfund = Cells.Find(<gesuchte Zahl>, lookin:=xlValues)
spalte = zellenfund.column
zeile = zellenfund.row
...
End Sub

Ich hoffe es hilft dir so weiter.

schöne Grüße - Kai

Sven

unread,
Oct 12, 2006, 7:42:01 AM10/12/06
to
looks good, but works bad...
hab es ziemlich genau so übernommen, wie du es gepostet hast, aber in der
zeile:

zeile = zellenfund.row

meckert er: "objektvariable oder with-blockvariable nicht festgelegt"

hier nochmal so, wie ich es übernommen habe:

Dim zeile As Long
Dim zellenfund As Range

Set zellenfund = Cells.Find(875, LookIn:=xlValues)
zeile = zellenfund.Row

k.oppel

unread,
Oct 12, 2006, 7:49:01 AM10/12/06
to
Hallo Sven,

Ups, ich hatte es jetzt nicht ausgetestet, sonst schau dir mal den letzten
Threat von Melanie in deinem ersten Posting an. Das Beispiel scheint mir
besser zu funktionieren, sie gibt die Zeile und Spalte durch die Debug.Print
- Methode zurück

Gruß - Kai

"Sven" schrieb:

Sven

unread,
Oct 12, 2006, 8:45:02 AM10/12/06
to
vielen Dank...hat funktioniert
0 new messages