Office: VBA - Zeilen zählen

Helfe beim Thema VBA - Zeilen zählen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, kleine Frage an Euch. Wie kann man Zeilen mit einem VBA code zählen lassen? Irgendwie kommt hier immer nur der Wert 1 raus. Sub Test2() Dim ggg... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Tauchmann, 16. September 2012.

  1. Tauchmann Erfahrener User

    VBA - Zeilen zählen


    Hallo,

    kleine Frage an Euch.
    Wie kann man Zeilen mit einem VBA code zählen lassen?
    Irgendwie kommt hier immer nur der Wert 1 raus.
    Sub Test2()
    Dim ggg As Long
    ggg = Range("C3").End(xlDown).Rows.Count
    Debug.Print ggg
    End Sub

    Ich habe ab Zelle C3 weitere Werte stehen, aber leider wird der Bereich nichtgezählt und gibt mir nicht die Anzahl der beschriebenen Zellen ab C3 wieder - immer nur 1.

    Was läuft da verkehrt?

    Schöne Grüße
    Tauchmann
     
    Tauchmann, 16. September 2012
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi,

    Code:
    [TABLE="width: 80"]
    <tbody>[TR]
    [TD]    Dim lngLetzte As Long[/TD]
    [/TR]
    [TR]
    [TD]    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count)[/TD]
    [/TR]
    </tbody>[/TABLE]
    
    Bis später,
    Karin
     
  3. miriki Erfahrener User
    Um auf die Frage nochmal kurz einzugehen:

    Mit "end(xldown)" gehst Du von einer Zelle aus nach unten, bis die erste leere Zelle gefunden wird, vorausgesetzt dass die Anfangs-Zelle nicht leer ist natürlich. Alternativ, wenn die Zelle leer ist, geht's nach unten, bis die erste nicht-leere Zelle gefunden wird. Dieses "end()" sucht also quasi immer den Status-Wechsel in einer Liste, ob nun nach unten, rechts, links oder hoch.

    Und das ist der Knackpunkt, mit dem man die letzte Zelle einer Liste zuverlässiger finden kann, nämlich dann, wenn nicht gewährleistet ist, daß die Liste lückenlos ist: Man fängt einfach am Ende des Blatts an (ganz unten oder rechts), wo sich normalerweise eine leere Zelle befindet, und geht dann "rückwärts" (nach oben oder links), bis man die erste belegte Zelle findet.

    Schwierig wird's eigentlich nur dann, wenn die belegten Zellen nur irgendwie als Cluster vorliegen, also mehr wie ein Streu-Diagramm als eine Liste aussehen. ;-)

    Gruß, Michael
     
  4. Tauchmann Erfahrener User

    VBA - Zeilen zählen

    Hallo zusammen,

    ich weiß 100% das alle Werte des Datenbankauszuges unter C3 stehen und keine Leerzellen enthalten.
    Leider verstehe ich nicht warum dann END(xldown) nicht funktioniert?
    Kann sich das einer von Euch erklären?
    Kann das auch mit einer END() funktionieren?
    Ich habe mal ein Beispiel angehängt.</SPAN>
    (Die andere Funktion klappt nur solange wie die Werte in der ersten Zeile stehen.</SPAN>
    Kann mir einer die andere Funktion erklären wie die das macht?)</SPAN>

    Schöne Grüße
    Tauchmann</SPAN>
     
    Tauchmann, 17. September 2012
    #4
  5. schatzi Super-Moderator
    Hallo!

    Range("C3").End(xlDown) bestimmt die letzte Zelle des durchgängig unter C3 gefüllten Bereichs; in deinem Beispiel also C25.
    Range("C25").Rows.Count ergibt somit logischerweise 1.

    Was du aber haben möchtest, ist Range("C3:C25").Rows.Count
    also
    Range(Range("C3"), Range("C3").End(xlDown)).Rows.Count
     
  6. Beverly
    Beverly Erfahrener User
    Hi,

    mit meinem geposteten Code wird Zeile 25 ausgegeben - also die korrekte letzte belegte Zeile in Spalte C.

    Ich versuche mal den von mir geposteten Code IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count) zu erklären:
    dies ist nichts anderes als eine WENN() Funktion und bedeutet - wenn die letzte Zelle in Spalte C leer ist, dann gib die erste gefüllte Zeile von unten nach oben in Spalte C zurück, andernfalls die Zeilenanzahl im Tabellenblatt. Sie hat den Vorteil, dass sie auch in dem Fall, wenn die letzte Zelle in Spalte C gefüllt ist, die richtige Zeile wiedergibt (also die Zeilenanzahl im Tabellenblatt) - im Gegensatz zu den anderen geposteten. Das kannst du feststellen,wenn du mal in die letzte Zelle der Spalte C einen Wert einträgst und deinen Code dann ablaufen lässt.

    Bis später,
    Karin
     
  7. Tauchmann Erfahrener User
    Hallo zusammen,

    vielen Dank für Eure Hilfen!
    Nun funktionier alles super.

    Jetzt habe ich aber gedacht das bei END(xlToLeft) es eigentlich auch funktionieren sollte, aber es geht nicht obwohl es genau die gleiche Formel ist. ICH FINDE DEN FEHLER EINFACH NICHT.
    Könnt Ihr mir nochmal helfen?

    Code:
    Sub grfrg()
    Dim a As Long
    Dim b As Long
    Dim c As Long
    Range("A4", "A1000").Clear
    a = Range(Range("D3"), Range("D3").End(xlDown)).Rows.Count
    c = Range(Range("D3"), Range("D3").End(xlToLeft)).Rows.Count
    'Makroaufzeichnung
        Range("D3").Select
    b = Range(Selection, Selection.End(xlToLeft)).Select
        Range("A8").Select
    Debug.Print a, b, c
    End Sub
    
    Schöne Grüße
    Tauchmann
     
    Tauchmann, 21. September 2012
    #7
  8. Beverly
    Beverly Erfahrener User

    VBA - Zeilen zählen

    Hi,

    und was soll dein Code machen?

    Bis später,
    Karin
     
  9. Exl121150 Erfahrener User
    Hallo Tauchmann,

    ich beschreibe, was vorgenannter Code macht:
    1) Range("D3").End(xlToLeft): Ausgehend von Zelle D3 geht das Programm in der gleichen Zeile (=Zeile 3) Zelle für Zelle nach links, bis es die letzte Zelle findet, die einen Wert enthält --> Das ist in diesem Fall die Zelle A3 (denn linker kann es nicht gehen).
    2) Range("D3"): liefert einfach Zelle D3
    3) Range(Range("D3"), Range("D3").End(xlToLeft)) kann somit vereinfacht werden in Range("A3:D3")
    4) Range("A3:D3").rows liefert die Auflistung aller Zeilen in diesem Bereich - und das ist nur 1 Zeile, nämlich die Zeile 3
    5) Range("A3:D3").rows.count liefert genau die Anzahl Zeilen der Auflistung aus Punkt 4), nämlich c = 1

    Wenn Du die Anzahl an Spalten haben willst, in denen Daten enthalten sind, beginnend bei Zelle D3 und von dort nach links gehend, so müsstest Du folgenden VBA-Ausdruck nehmen:
    c = Range(Range("D3"), Range("D3").End(xlToLeft)).Columns.Count
    was schließlich bei Deiner Datenvorgabe Range("A3:D3").Columns.Count ergeben würde und letztlich zu einer Spaltenanzahl = 4 führen würde.

    Ein Tipp zum Schluss:
    Wenn Du Dir nicht sicher bist, ob Du mit einer bestimmten Bereichsformel den gewünschten Bereich ermittelt hast, gib einfach im Direktbereich-Fenster des VBA-Editors (erreichbar über Strg+G, falls es nicht sichtbar sein sollte) den Bereich, gefolgt von der Address-Methode, ein. In Deinem Fall also:
    ?range(range("D3"),range("D3").End(xltoleft)).address
    Dieser Ausdruck liefert als Ergebnis in der nächsten Zeile:
    $A$3:$D$3
    oder Du fügst noch folgenden Zusatz zur Address-Methode hinzu:
    ?range(range("D3"),range("D3").End(xltoleft)).address(external:=true)
    was zB. zu folgender Ergebniszeile führt:
    [Tauchmann_Mappes.xlsm]Tabelle1!$A$3:$D$3
    Wichtig dabei ist das Fragezeichen am Anfang der Zeile - es ist die Kurzform für "Debug.Print "
     
    Zuletzt bearbeitet: 22. September 2012
    Exl121150, 22. September 2012
    #9
Thema:

VBA - Zeilen zählen

Die Seite wird geladen...
  1. VBA - Zeilen zählen - Similar Threads - VBA Zeilen zählen

  2. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  3. VBA Auslesen von Strings und erstellen neuer Zeilen in einer Tabelle

    in Microsoft Excel Hilfe
    VBA Auslesen von Strings und erstellen neuer Zeilen in einer Tabelle: Guten Tag zusammen In der 1. Spalte stehen KundenIDs (jeweils 2 Buchstaben), separiert mit einem Komma. Beispielsweise: ag,ok,be,li,ce In der 2. bis 15. Spalte stehen dann diverse Eigenschaften,...
  4. Per VBA Zeilen einfügen und danach in diese Texte kopieren

    in Microsoft Excel Hilfe
    Per VBA Zeilen einfügen und danach in diese Texte kopieren: Hallo zusammen, ich möchte im 1. Schritt via VBA-Code eine bestimmte, variable Anzahl Zeilen (der Wert wird immer im Reiter "Data" in der Zelle S32 ermittelt) in einem anderen Reiter namens...
  5. VBA gefüllte Spalten/Zellen bis zur nächsten leeren Zählen

    in Microsoft Excel Hilfe
    VBA gefüllte Spalten/Zellen bis zur nächsten leeren Zählen: Hallo zusammen, ich bin neu auf dem Gebiet, habt Nachsicht. Ich habe folgendes Problem... Ich habe in Tabellenblatt 1 Zellen die beschrieben werden, diese werden über einen Button in Zeile 4...
  6. VBA-Zeilen zählen und weiter verwenden

    in Microsoft Excel Hilfe
    VBA-Zeilen zählen und weiter verwenden: Liebe Forumsgemeinde, ich habe für einen Vba-Anfänger wie mich mal wieder ein Problem zu lösen. In tbl_2 brauche ich als Variable1 die Anzahl der gefüllten Zeilen aus tbl_1 ab Range ("A10") bis...
  7. VBA Zeilen in einer Tabelle zählen

    in Microsoft Access Hilfe
    VBA Zeilen in einer Tabelle zählen: Hallo zusammen, es wäre super wenn mir hier jemand weiterhelfen könnte, ich bin hier gerade etwas am verzweifeln. Ich möchte mir gerne die Anzahl der Zeilen in meinem Formular anzeigen lassen,...
  8. Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen

    in Microsoft Excel Hilfe
    Mit VBA Zahlen in Spalte suchen und die betreffenden Zeilen löschen: Hallo, leider habe ich noch in keinem Buch einen Hinweis gefunden ... Folgende Probleme: 1. Die Stammdatendatei ist per Makrorecorder soweit formatiert, das bestimmte Spalten gelöscht wurden...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden