Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilennummer ausgeben

Zeilennummer ausgeben
11.06.2004 12:58:30
Nele
Hallo,
ich lasse die Werte der erste Spalte einer Tabelle mit einer For Each Schleife auslesen.
(also: For Each Zelle in Worksheets(1).Columns(1) )
Nun brauch ich zu diesem Wert aber die Zeile in der dieser Wert steht.
Gibt es da eine Methode?
Vielen Dank für Eure Hilfe
Nele
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Zelle.Row = Zeilennummer
ChrisL
Hi Nele
Siehe Titel.
Gruss
Chris
Zelle.Row
Boris
Grüße Boris
Zelle.Row oT
Uduuh
Anzeige
AW: Zelle.Row oT
Nele
Danke für Eure Antworten, aber das ist nicht das was ich brauche.
Ich habe ja keine Zelle - ich habe nur den Wert der in der Zelle steht.
Oder anders: kann man mit irgendeiner Methode feststellen in welcher Zelle die Schleife For Each Cell In Worksheets(1).Columns(1) gerade ist?
Danke Nele
Anzeige
AW: Zelle.Row oT
Uduuh
Hallo,
wenn du die Werte mit For Each Zelle in ... liest, dann ist Zelle ein Range-Objekt, also eine Zelle. Mit Zelle.Row erhälst du somit die Zeile von Zelle. Mit Zelle.Address erhältst du die Adresse.
Wenn du dich ein bisschen klarer äußerst, was du eigentlich willst, kann dir sicherlich auch besser geholfen werden.
Gruß aus'm Pott
Udo
http://www.excelerator.de
Anzeige
Cell.Row
Boris
Hi Nele,
...und wenn du den Variablennamen nochmals änderst, dann erhälst du auch noch ne 3. Antwort - aber spätestens dann würd ich deinen angegebenen VBA-Level mal überdenken;-)
Ansonsten hat Udo alles gesagt.
Grüße Boris
AW: Cell.Row
Nele
das ist ja wirklich nett von Dir Boris.
Ich habs ausprobiert und es geht eben nicht mit cell.Row oder Zelle.row (wie auch immer) weil kein Range-Objekt zurückgegeben wird sondern ein Variant Wert (eben der Inhalt der Zelle)
Würde dort nur stehen "For each cell in Worksheets(1).Columns(1) dann klappt das auch mit dem cell.row aber eben durch das VALUE wird kein RangeObjekt zurück gegeben und somit kann ich auch nicht ohne weiteres cell. row anwenden (ich hab es versucht und es kommt eine Fehlermeldung).
Mag ja sein das ich was übersehen habe und es doch klappt, aber das ist denke ich kein Grund mich persönlich anzugreifen!!
viele Grüße
Nele
Anzeige
Warum denn gleich eingeschnappt?
Boris
Hi Nele,
ich hatte doch extra noch den ;-) dazugesetzt...;-)
Starte doch mal einfach folgenden Code und schau dir das Ergebnis an:
Option Explicit

Sub nele()
Dim Cell As Range
For Each Cell In Worksheets(1).[a1:a5]
Cell = "X" & Cell.Row
Next Cell
For Each Cell In Worksheets(1).[a1:a5]
MsgBox "In der Zelle A" & Cell.Row & _
" steht der Wert " & Cell.Value, , "Gebe bekannt..."
Next Cell
End Sub

Die Cell-Variable des Typ Range besitzt eben nicht nur die Value-Eigenschaft, sondern eben auch die Row-Eigenschaft.
Jetzt klarer?
Grüße Boris
Anzeige
bin ich doch garnicht :o)
Nele
Hi boris,
ist mir schon klar das die cell-variable nicht nur die value-Eigenschaft besitzt.
Ich hab jetzt die For Each Next Schleifte von For Each Cell In Worksheets(1).Columns(1).value in For Each Cell In worksheets(1).columns(1) geändert. Dann klappt das auch mit dem Cell.Row (da tauchen dann zwar andere Probleme auf - aber das geht dann hoffentlich auch )
Eine Frage hab ich noch (auch wenn du mich dann vollends als Anfänger abstempelst ;op)
- vielleicht weißt du ja warum - Cell.Row funktioniert nur wenn ich die Gruppe einschränke also etwa (so wie du) [a1:a5] aber da ich nicht weiß wie viele Einträge in der ersten Spalte stehen kann ich die Gruppe nicht einschränken.
Wenn ich mir bei For Each Cell In Worksheets(1).Columns(1) mir cell.row ausgeben lasse kommt nur 1.
Hast du ne Lösung?
Also Danke für deine Geduld und schönes We :o)
Nele
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zeilennummer in Excel VBA ermitteln


Schritt-für-Schritt-Anleitung

Um die Zeilennummer in Excel VBA zu ermitteln, kannst du eine einfache For Each-Schleife verwenden. Hier ist ein Beispiel, wie du das umsetzen kannst:

Sub ZeilennummerErmitteln()
    Dim Cell As Range
    For Each Cell In Worksheets(1).Columns(1)
        ' Prüfen, ob die Zelle nicht leer ist
        If Not IsEmpty(Cell.Value) Then
            MsgBox "In der Zelle " & Cell.Address & " steht der Wert: " & Cell.Value & _
                   ". Die Zeilennummer ist: " & Cell.Row
        End If
    Next Cell
End Sub

In diesem Beispiel wird für jede Zelle in der ersten Spalte geprüft, ob sie nicht leer ist. Wenn sie einen Wert hat, wird die Adresse und die Zeilennummer der Zelle ausgegeben.


Häufige Fehler und Lösungen

  1. Fehler: Typen nicht übereinstimmend

    • Lösung: Stelle sicher, dass du die Cell-Variable als Range deklariert hast. Wenn du Cell mit .Value verwendest, erhältst du einen Variant-Typ, der keine Zeilennummer zurückgibt.
  2. Fehler: Zeilennummer zeigt immer 1 an

    • Lösung: Verwende For Each Cell In Worksheets(1).Columns(1) anstelle von For Each Cell In Worksheets(1).Columns(1).Value. Der Punkt .Value gibt nur den Inhalt der Zellen zurück, nicht das Range-Objekt.

Alternative Methoden

Eine andere Methode, um die Zeilennummer zu ermitteln, ist die Verwendung von Find oder Match, um eine spezifische Zelle zu suchen. Hier ein Beispiel:

Sub ZeilennummerMitFind()
    Dim Suchwert As String
    Dim GefundeneZelle As Range

    Suchwert = "DeinSuchwert"
    Set GefundeneZelle = Worksheets(1).Columns(1).Find(Suchwert)

    If Not GefundeneZelle Is Nothing Then
        MsgBox "Der Wert " & Suchwert & " wurde in Zeile " & GefundeneZelle.Row & " gefunden."
    Else
        MsgBox "Wert nicht gefunden."
    End If
End Sub

Diese Methode ist besonders nützlich, wenn du nach einem spezifischen Wert suchst.


Praktische Beispiele

Hier sind einige praktische Szenarien, in denen du die Zeilennummer ermitteln kannst:

  • Datenüberprüfung: Bei der Verarbeitung von Daten in einer Liste kannst du sicherstellen, dass alle Werte korrekt sind und die entsprechenden Zeilennummern ausgegeben werden.
  • Dynamische Berichte: Wenn du Berichte aus verschiedenen Tabellenblättern erstellst, kannst du die Zeilennummern nutzen, um Daten zu verknüpfen.

Tipps für Profis

  • Nutze With-Blöcke, um den Code lesbarer zu machen und die Performance zu verbessern:
With Worksheets(1)
    For Each Cell In .Columns(1)
        If Not IsEmpty(Cell.Value) Then
            Debug.Print "Zeile: " & Cell.Row & " Wert: " & Cell.Value
        End If
    Next Cell
End With
  • Verwende den Debug.Print-Befehl, um Informationen im Direktfenster auszugeben, anstatt ständig MsgBox-Fenster zu öffnen.

FAQ: Häufige Fragen

1. Warum funktioniert Cell.Row nicht bei For Each Cell In Worksheets(1).Columns(1).Value?
Cell.Row funktioniert nicht, weil du hier ein Variant-Objekt zurückgibst. Du musst das Range-Objekt verwenden, um die Zeilennummer ermitteln zu können.

2. Wie kann ich die Zeilennummer nur für nicht-leere Zellen ausgeben?
Du kannst innerhalb der Schleife eine Bedingung einfügen, die prüft, ob die Zelle nicht leer ist, bevor du die Zeilennummer ausgibst, wie im Schritt-für-Schritt-Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige