Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zählen der gefüllten Zeilen - VBA

Zählen der gefüllten Zeilen - VBA
30.03.2008 15:25:00
Wolfgang
Hallo,
in einer Mappe befinden sich mehrere Tabellenblätter. Doppelklicke ich in einen bestimmten Bereich des Blattes "Ergebnis", öffnet sich ein UF, hierüber werden Daten in ein vorbestimmtes Tabellenblatt, z.B. "Lieferanten" hineinkopiert. Wie kann der Code aussehen, wenn nun in der Zelle, die ich "Doppelklicke" die Gesamtzahl der Datensätze bzw. gefüllten Zeilen des jeweiligen Tabellenblattes, welches über den UF "beschickt" wird bzw. ja auch namentlich benannt werden kann, erscheinen lassen möchte? - Danke schon jetzt für die Rückmeldungen.
Herzliche Grüße
Wolfgang

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 15:34:00
Daniel
Hi
die Anzahl der Datensätze in einem Tabellenblatt kannst du mit der Excel-Formel ANZAHL2(Zellbezug) ermitteln, also z.B. =Anzahl2(Tabelle1!A:A).
falls die Daten noch irgendwelche Überschriften oder Summenzeilen enthalten, die nicht mitgehzählt werden sollen, müssten diese noch abgezogen werden: =Anzahl2(Tabelle1!A:A)-1
im Makro kannst du diese Funktion über WORKSHEETFUNCTION vewenden, dh:

Worksheetfunction.CountA(Sheets("Tabelle1").Range("A:A"))


Gruß, Daniel

Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 15:48:00
Wolfgang
Hallo Daniel,
Danke für Deine Rückmeldung; Wie kann ich im Code klar machen, dass das Ergebnis in die Zelle, in der ich Doppelklicke, im Beispiel also im Blatt Ergebnis eingetragen wird. Im Moment wird mir die Zahl in der aktiven Zelle des Blattes "Lieferanten" eingefügt. - Danke schon jetzt wieder für die Rückmeldung.
Gruß - Wolfgang

Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 15:46:00
Gerd
Hallo Wolfgang,
die Variable "Beschickt" kannst als Public in einem Standardmodul oben deklarieren
u. ihr den Wert "von der Userform aus" zuweisen.
Die Werte einer maßgeblichen Spalte, hier "D" , zu zählen, sollte genügen.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Beschickt As Worksheet ' ggf. als Public ...
Set Beschickt = ThisWorkbook.Worksheets("Tabelle2") 'ggf. im Userform-Code
Target.Value = Application.WorksheetFunction.CountIf(Beschickt.Columns(4), "" & "")
Cancel = True
End Sub


Gruß Gerd

Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 16:01:00
Wolfgang
Hallo Gerd,
Herzlichen Dank für Deine Rückmeldung.
Da ich auf mehrere Tabellenblätter zugreife und somit verschiedene Bereiche für den Doppelklick in "Ergebnis" definiert habe, würde ich das jeweilige Zusammenzählen gerne über den jeweiligen UF-Code lösen. Ich habe versucht, Deinen Code einzubauen, es kommt eine Meldung "Objekt erforderlich", was müßte ich da verändern bzw. wie funktioniert Public...? - Danke schon jetzt wieder für die Rückmeldung.

Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 16:17:00
Gerd
Hallo Wolfgang,
Zählen in mehreren Sheets - sind dies immer dieselben? Dann würde es einfacher gehen.
Ansonsten müsstest Du schreiben oder per Upload zeigen, wie die betreffenden "zu zählenden" Sheets ausgewählt werden.
Gruß Gerd

AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 16:32:34
Wolfgang
Hallo Gerd,
Ich habe in die Mappe mehrere UF "eingebaut". Mit dem jeweils aktuellem UF wird aber immer nur ein namentlich benennbares Tabellenblatt (In dem Beispiel habe ich es "Lieferanten" genannt) angesteuert, welches dann auch für dieses UF immer gleich bleibt. Je nach dem in welche Spalte ich Doppelklicke erscheint das jeweilige unterschiedliche UF.
Gruß - Wolfgang

Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 17:01:00
Gerd
Hallo Wolfgang,
meinst Du etwa so? -bestimmte Zelle angeklickt, dann Anzahl aus bestimmter Tabelle?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strBlattname As String
If Target.Row = 20 Then    'Zeile der doppelgeklickten Zelle
Select Case Target.Column   'Spaltennummer  der doppelgeklickten Zelle
Case 5
strBlattname = "Lieferanten"
Case 6
strBlattname = "Kunden"
Case 10
strBlattname = "Personal"
Case Else
End Select
If strBlattname  "" Then
Target.Value = Application.WorksheetFunction.CountIf(Worksheets(strBlattname).Columns(4), " _
" & "")
End If
Cancel = True
End If
End Sub


Die Worksheetfunction "CountA" wie von Daniel vorgeschlagen, könntest natürlich ebenso nehmen.
Gruß Gerd

Anzeige
AW: Zählen der gefüllten Zeilen - VBA
30.03.2008 17:43:17
Wolfgang
Hallo Gerd,
der Code mit dem Doppelklick steht bereits, hierüber wird der Aufruf des jeweiligen UF gesteuert. Innerhalb des UF würde ich gerne regeln, dass die Daten in dem angesteuerten Tabellenblatt -es wird immer nur ein bestimmte Tabellenblatt über dieses UF angesteuert- zusammengezählt werden und dann das Ergebnis in der doppelgeklickten Zelle erscheint. Der Bereich für den Doppelklick umfass jeweils die Zeilen 10:61 und dann in den Spalten E:J mit jeweils anderm UF. Ich bekomme Deinen Code, aber den von Daniel dahingehend nicht angepasst. Ich habe den Code für den Doppelklick angefügt. Es gibt für jeden Bereich auch ein Tabellenblatt, welches dann konstant über das jeweilige UF "beschickt" wird. Hast Du da noch evtl. eine Idee? - Danke schon jetzt wieder für die Rückmeldung.
Gruß
Wolfgang

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Lieferanten
If Not Intersect(Target, Range("E10:E61")) Is Nothing Then
With Target
.Activate   ' hier Aktionen mit der Zelle
End With
UserFormLieferanten.Show 'Makroaufruf
End If
'Kunden
If Not Intersect(Target, Range("F10:F61")) Is Nothing Then
With Target
.Activate   ' hier Aktionen mit der Zelle
End With
UserFormKunden.Show 'Makroaufruf
End If
'Angebote
If Not Intersect(Target, Range("G10:G61")) Is Nothing Then
With Target
.Activate   ' hier Aktionen mit der Zelle
End With
UserFormAngebote.Show 'Makroaufruf
End If
'Rechnungen
If Not Intersect(Target, Range("H10:H61")) Is Nothing Then
With Target
.Activate   ' hier Aktionen mit der Zelle
End With
UserFormRechnungen.Show 'Makroaufruf
End If
'Ansprechpartner
If Not Intersect(Target, Range("I10:I61")) Is Nothing Then
With Target
.Activate   ' hier Aktionen mit der Zelle
End With
UserFormAnsprechpartner.Show 'Makroaufruf
End If
'Bearbeiter
If Not Intersect(Target, Range("J10:J61")) Is Nothing Then
With Target
.Activate   ' hier Aktionen mit der Zelle
End With
UserFormBearbeiter.Show 'Makroaufruf
End If
End Sub


Anzeige
Danke Gerd - hat sich erledigt.
30.03.2008 18:50:57
Wolfgang
Hallo Gerd,
ich habe noch weiterhin versucht und probiert. Konnte somit eine Lösung finden, um Deine Codes einzubauen. Hat sich somit erledigt. Recht herzlichen Danke für Deine Ausarbeitungen und Geduld mit mir.
Herzliche Grüße und noch einen schönen Sonntag.
Wolfgang

AW: Danke Gerd - hat sich erledigt.
30.03.2008 19:37:00
Gerd
Hi Wolfgang,
ich hatte noch weitergebastelt.
'In ein allgemeines Modul z.B. Modul1 ganz oben
Option Explicit
Public ZellenadressefuerAnzahlDatensaetze As String
'In den jeweiligen Userforms in den Code eines Steuerelementes, z.B.

Private Sub CommandButton2_Click()
Worksheets("Ergebnisse").Range(ZellefuerAnzahlDatensaetze) _
= Application.WorksheetFunction. _
CountIf(Worksheets(Mid(Me.Name, 9)).Columns(4), "" & "")
End Sub


'Modul Tabellenblatt Ergebnisse


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ZellenadressefuerAnzahlDatensaetze = Target.Address(True, True)
Cancel = True
'Lieferanten
If Not Intersect(Target, Range("E10:E61")) Is Nothing Then
UserFormLieferanten.Show 'Makroaufruf
End If
End Sub


C' est la vie. :-)
Gruß Gerd

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zählen der gefüllten Zeilen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um die Anzahl der gefüllten Zeilen in einem Excel-Arbeitsblatt mithilfe von VBA zu zählen, kannst du den folgenden Ansatz verwenden. Dieser Code zählt die befüllten Zellen in einer bestimmten Spalte und gibt das Ergebnis in der Zelle aus, in der du einen Doppelklick machst.

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (dein Dokument)".
    • Wähle Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim blattName As String
    Dim anzahlGefuellteZellen As Long

    ' Beispiel: Zähle befüllte Zellen in Spalte D
    blattName = "Tabelle1" ' Benenne dein Zielblatt
    anzahlGefuellteZellen = Application.WorksheetFunction.CountA(Worksheets(blattName).Columns(4))

    ' Ergebnis in die Zelle einfügen, die du angeklickt hast
    Target.Value = anzahlGefuellteZellen
    Cancel = True
End Sub
  1. Schließe den VBA-Editor und teste den Code, indem du auf eine Zelle in deinem Arbeitsblatt doppelklickst.

Häufige Fehler und Lösungen

Fehler 1: "Objekt erforderlich"
Lösung: Stelle sicher, dass der Blattname korrekt ist und dass das Zielblatt existiert.

Fehler 2: Ergebnis wird nicht in die gewünschte Zelle eingefügt.
Lösung: Überprüfe die Target-Referenz und stelle sicher, dass du die richtige Zelle doppelt klickst.


Alternative Methoden

Wenn du die Anzahl der gefüllten Zellen ohne VBA zählen möchtest, kannst du die Excel-Formel ANZAHL2 verwenden:

=ANZAHL2(Tabelle1!A:A)

Diese Formel zählt alle befüllten Zellen in Spalte A der Tabelle "Tabelle1".

Für komplexere Anforderungen kannst du auch die Funktion ZÄHLENWENN verwenden, um spezifische Kriterien anzuwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du gefüllte Zellen zählen kannst:

  1. Zählen der Zellen in einer bestimmten Zeile:

    CountIf Worksheets("Tabelle2").Rows(5), "<>"

    Dieser Code zählt alle befüllten Zellen in Zeile 5 von "Tabelle2".

  2. Zählen der Zellen, die nicht leer sind:

    Application.WorksheetFunction.CountIf(Worksheets("Tabelle1").Columns(1), "<>")

    Dies zählt alle nicht-leeren Zellen in der ersten Spalte von "Tabelle1".


Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang deines Moduls Option Explicit ein, um sicherzustellen, dass alle Variablen deklariert werden.
  • Verwende Error Handling: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler abzufangen.
  • Public Variablen: Setze Variablen als Public, wenn du sie in mehreren Sub-Prozeduren verwenden möchtest.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der gefüllten Zellen in mehreren Spalten zählen?
Du kannst den Code erweitern, um mehrere Spalten zu berücksichtigen, indem du eine Schleife verwendest.

2. Gibt es eine Möglichkeit, die Anzahl der befüllten Zellen in einer bestimmten Bedingung zu zählen?
Ja, du kannst die CountIf-Funktion verwenden, um Zellen zu zählen, die bestimmten Kriterien entsprechen.

3. Wie kann ich sicherstellen, dass mein VBA-Code in allen Excel-Versionen funktioniert?
Teste deinen Code in verschiedenen Excel-Versionen und achte auf die Unterschiede in den Funktionen.

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