Discussion:
suche Wert mit VBA und gebe Zeilenposition aus
(zu alt für eine Antwort)
Thom
2008-08-31 18:17:18 UTC
Permalink
Hallo liebe NG

Ich habe in der Tabelle2 in der Spalte A bis C Diverse Einträge. Ca. 2000
Zeilen.

Jetzt will ich auf Tabelle1 auf A1 den Zeilenwert eines bestimmten Artikels
aus Tabelle2 eintragen, und dies
Mittels VBA. So im Sinne von, suche einen Wert und gebe die Zeilennummer
dazu aus.

Beispiel: In Tabelle2 ist auf C128 der Artikel "ABC" eingetragen. In der
Tabelle1 muss also nach Ausführung des Makros in A1 der wert "128" sein.

Ich hoffe mich einiger massen verständlich ausgedrückt zu haben.

Für Tipps danke ich im Voraus.

Gruss Thom
Patrick Görg
2008-08-31 18:57:46 UTC
Permalink
Hallo Thom,

versuch es mal damit

Worksheets("Tabelle2").Activate
Worksheets("Tabelle2").UsedRange.Select
Selection.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas,
LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
Worksheets("Tabelle1").Cells(1, 1).Value = ActiveCell.Address

Erklärung :
Worksheets("Tabelle2").Activate
Wechselt zu Tabelle 2

Worksheets("Tabelle2").UsedRange.Select
Selektiert den benutzten Bereich, in dem gesucht werden soll

Selection.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
Sucht "ABC" in dem benutzten Bereich und aktiviert die Zelle

Worksheets("Tabelle1").Cells(1, 1).Value = ActiveCell.Address
Schreibt in Tabelle 1, 1.Zeile, 1. Spalte die Adresse der aktivierten
Zelle in Tabelle 2

fertig

Ich hoffe es klappt !

Grüße

Patrick
Thom
2008-08-31 19:49:48 UTC
Permalink
Hallo Patrick

Danke dir. Sieht gut aus. Ich kriege den Wert "$C$5". Was mit der Stelle des
Eintrages "ABC" stimmt. Wenn ich jetzt nur noch "5" hätte wäres es perfekt.

Weisst du wie?

Gruss Thom
Post by Patrick Görg
Hallo Thom,
versuch es mal damit
Worksheets("Tabelle2").Activate
Worksheets("Tabelle2").UsedRange.Select
Selection.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
Worksheets("Tabelle1").Cells(1, 1).Value = ActiveCell.Address
Worksheets("Tabelle2").Activate
Wechselt zu Tabelle 2
Worksheets("Tabelle2").UsedRange.Select
Selektiert den benutzten Bereich, in dem gesucht werden soll
Selection.Find(What:="ABC", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
Sucht "ABC" in dem benutzten Bereich und aktiviert die Zelle
Worksheets("Tabelle1").Cells(1, 1).Value = ActiveCell.Address
Schreibt in Tabelle 1, 1.Zeile, 1. Spalte die Adresse der aktivierten
Zelle in Tabelle 2
fertig
Ich hoffe es klappt !
Grüße
Patrick
Peter Schleif
2008-08-31 19:31:28 UTC
Permalink
Post by Thom
Ich habe in der Tabelle2 in der Spalte A bis C Diverse Einträge. Ca. 2000
Zeilen.
Jetzt will ich auf Tabelle1 auf A1 den Zeilenwert eines bestimmten Artikels
aus Tabelle2 eintragen
Beispiel: In Tabelle2 ist auf C128 der Artikel "ABC" eingetragen. In der
Tabelle1 muss also nach Ausführung des Makros in A1 der wert "128" sein.
Der Code durchsucht [A:C] spaltenweise. Also zuerst in A, dann in B,
dann in C. Wenn Du lieber zeilenweise suchen lassen möchtest, musst Du
in der Find-Methode SearchOrder:=xlByRows ergänzen.

Peter

Sub suche_wert_und_zeile()
Dim f As Range

Set f=Sheets("Tabelle2").[A:C].Find(What:="ABC",LookAt:=xlWhole)

If Not f Is Nothing Then
Sheets("Tabelle1").[A1] = f.Row
Else
Sheets("Tabelle1").[A1].ClearContents
End If
End Sub
Thom
2008-08-31 20:11:16 UTC
Permalink
Hallo Peter

Perfekt. Danke dir.

Gruss Thom
Post by Peter Schleif
Post by Thom
Ich habe in der Tabelle2 in der Spalte A bis C Diverse Einträge. Ca. 2000
Zeilen.
Jetzt will ich auf Tabelle1 auf A1 den Zeilenwert eines bestimmten Artikels
aus Tabelle2 eintragen
Beispiel: In Tabelle2 ist auf C128 der Artikel "ABC" eingetragen. In der
Tabelle1 muss also nach Ausführung des Makros in A1 der wert "128" sein.
Der Code durchsucht [A:C] spaltenweise. Also zuerst in A, dann in B,
dann in C. Wenn Du lieber zeilenweise suchen lassen möchtest, musst Du
in der Find-Methode SearchOrder:=xlByRows ergänzen.
Peter
Sub suche_wert_und_zeile()
Dim f As Range
Set f=Sheets("Tabelle2").[A:C].Find(What:="ABC",LookAt:=xlWhole)
If Not f Is Nothing Then
Sheets("Tabelle1").[A1] = f.Row
Else
Sheets("Tabelle1").[A1].ClearContents
End If
End Sub
Loading...