Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Zeilenwert finden + Zeilennummer ausgeben

VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 08:43:41
Dominic
Hi,
mit dem folgenden Skript möchte ich in Spalte Z1 bis Z200 den Wert 1 finden. Wenn Excel den Wert gefunden hat und die Zeilennummer in die Zelle G9 einträgt/ausgiebt.
Bei der folgenden Version erhalte ich aber immer eine Fehlermeldung ("Laufzeitfehler 1004, objektdefinierter Fehler") und weiß absolut nicht woran es liegt.
Dim ZeileAngabe As Long
ZeileAngabe = Columns("Z1:Z200").Find(what:=1, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SerchFormat:=False).Row
Range("G9").Value = ZeileAngabe

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 09:00:21
hary
Moin
Dim ZeileAngabe As Range
Set ZeileAngabe = Range("Z1:Z200").Find(what:=1, LookIn:=xlValues, LookAt:=xlWhole,  _
SearchOrder:=xlByRows, SearchDirection:=xlNext)
Range("G9").Value = ZeileAngabe.Row

gruss hary

AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 09:36:18
Dominic
Danke Hary,
funktioniert. Kann ich bei der Zeilenangabe noch den Wert 14 abziehen?
Habs mit:
ZeileAngabe = ZeileAngabe - 14
versucht, funktioniert so einfach aber nicht.

Anzeige
AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 09:39:17
hary
Moin
Range("G9").Value = ZeileAngabe.Row - 14 

gruss hary

AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 09:49:36
Dominic
Hi Hary,
Funktioniert nicht - Laufzeitfehler 91, Objektvariable oder With Blockvariable nicht festgelegt.

AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 09:52:08
Dominic
Bin verwirrt, dein vorheriger Code der funktionierte und die entsprechende Zelle in G9 ausgab:
Dim ZeileAngabe As Range
Set ZeileAngabe = Range("Z1:Z200").Find(what:=1, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext)
Range("G9").Value = ZeileAngabe.Row
Funktioniert nun auch nicht mehr so. Es erscheint auch die Fehlermeldung 91....

Anzeige
AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 09:58:45
hary
Moin
Da der Bereich nicht im aktiven Blatt liegt. Du musst das Blatt referenzieren.
Dim ZeileAngabe As Range
With Worksheets("Tabelle1") ' Blattname anpassen
Set ZeileAngabe = .Range("Z1:Z200").Find(what:=1, LookIn:=xlValues, LookAt:=xlWhole,  _
SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not ZeileAngabe Is Nothing Then
.Range("G9").Value = ZeileAngabe.Row
ZeileAngabe = ZeileAngabe - 14
End If
End With

gruss hary

Anzeige
AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 11:08:23
Dominic
Hi Hary,
die Korrekte Zeile wird ausgegeben, die "-14" wird aber gar nicht berücksichtigt. Egal wie ich es versuche umzuändern, es wird immer Zeile 179 ausgegeben (was wie bereits erwähnt korrekt ist, da hier der gesuchte Wert steht, aber diese Zeile muss noch mit 14 subtrahiert werden...
Kannst du mir bitte nochmal weiterhelfen?

Anzeige
AW: VBA Zeilenwert finden + Zeilennummer ausgeben
02.10.2014 11:42:35
yummi
Hallo Hary,
wenn du die Zeile abziehen willst musst du das auch für die zeile machen und nicht für den gesamten range
ZeileAngabe.row = ZeileAngabe.row - 14 oder wenn dir das reinschreiben reicht weil du mit dem range nix machen willst
.Range("G9").Value = ZeileAngabe.Row -14
Gruß
yummi

Anzeige
statt Columns... Range("Z1:Z200") ? owT
02.10.2014 09:02:38
robert

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilenwert suchen und Zeilennummer mit VBA ausgeben


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA einen bestimmten Wert in einer Spalte zu suchen und die entsprechende Zeilennummer auszugeben, kannst du das folgende Skript verwenden. In diesem Beispiel suchen wir in der Spalte Z von Z1 bis Z200 nach dem Wert 1 und geben die Zeilennummer in Zelle G9 aus.

Dim ZeileAngabe As Range
With Worksheets("Tabelle1") ' Blattname anpassen
    Set ZeileAngabe = .Range("Z1:Z200").Find(what:=1, LookIn:=xlValues, LookAt:=xlWhole, _
    SearchOrder:=xlByRows, SearchDirection:=xlNext)
    If Not ZeileAngabe Is Nothing Then
        .Range("G9").Value = ZeileAngabe.Row
    End If
End With

Falls du den Wert 14 von der gefundenen Zeilennummer abziehen möchtest, kannst du dies wie folgt tun:

.Range("G9").Value = ZeileAngabe.Row - 14

Häufige Fehler und Lösungen

  1. Laufzeitfehler 91: Objektvariable oder With Blockvariable nicht festgelegt

    • Dieser Fehler tritt auf, wenn die gesuchte Zelle nicht gefunden wurde. Stelle sicher, dass der Wert, den du suchst, in dem angegebenen Bereich vorhanden ist. Füge eine Überprüfung hinzu, um sicherzustellen, dass ZeileAngabe nicht Nothing ist.
  2. Laufzeitfehler 1004, objektdefinierter Fehler

    • Dieser Fehler kann auftreten, wenn du den Bereich nicht korrekt definierst oder wenn das Blatt nicht aktiv ist. Stelle sicher, dass du das richtige Blatt referenzierst.

Alternative Methoden

Eine alternative Methode, um den Wert in einer Spalte zu suchen und die Zeilennummer zurückzugeben, ist die Verwendung der Application.Match-Funktion. Hier ein Beispiel:

Dim ZeilenNummer As Variant
ZeilenNummer = Application.Match(1, Worksheets("Tabelle1").Range("Z1:Z200"), 0)
If Not IsError(ZeilenNummer) Then
    Range("G9").Value = ZeilenNummer
End If

Diese Methode gibt die Zeilennummer zurück, ohne die Find-Methode zu verwenden.


Praktische Beispiele

Wenn du den Wert in einer anderen Spalte oder in einem anderen Bereich suchen möchtest, passe einfach den Bereich in der Range-Anweisung an. Zum Beispiel:

Set ZeileAngabe = .Range("A1:A100").Find(what:=5, LookIn:=xlValues, LookAt:=xlWhole)

Hier wird in der Spalte A nach dem Wert 5 gesucht.


Tipps für Profis

  • Verwende die Find-Methode für komplexe Suchen, indem du Parameter wie LookIn, LookAt und SearchOrder anpasst.
  • Du kannst die Suchrichtung und den Suchbereich dynamisch gestalten, um flexiblere Suchen durchzuführen.
  • Denke daran, Fehlerbehandlung durch On Error Resume Next und If Not ZeileAngabe Is Nothing Then zu implementieren, um Laufzeitfehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Wert in einer anderen Spalte suchen? Um in einer anderen Spalte zu suchen, ändere einfach den Bereich der Range-Anweisung, z.B. Range("B1:B100").

2. Was passiert, wenn der gesuchte Wert nicht gefunden wird? Wenn der Wert nicht gefunden wird, bleibt die Zelle G9 unverändert. Du kannst eine zusätzliche Logik hinzufügen, um einen Hinweis anzuzeigen, wenn der Wert nicht gefunden wird.

3. Wie kann ich mehrere Werte gleichzeitig suchen? Um mehrere Werte gleichzeitig zu suchen, kannst du eine Schleife verwenden, die durch die Werte iteriert und für jeden Wert die Find-Methode aufruft.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige