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: CountA per VBA in Zelle schreiben

CountA per VBA in Zelle schreiben
11.10.2016 13:04:40
Hartmut_M
Hallo, ich möchte per VBA eine Funktion in eine Zelle schreiben. Es sollen aus einem anderen Tabellenblatt die nicht leeren Zellen in Spalte A gezählt werden.
Habe diesen Code:
Worksheets("Bericht").Range("K2").FormulaLocal = "=Application.WorksheetFunction.CountA(Sheets(1).Columns("A:A"))"
Der Code wird immer in rot angezeigt. Wo ist der Fehler?
Gruß Hartmut
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CountA per VBA in Zelle schreiben
11.10.2016 13:15:22
Werner
Hallo Hartmut,
Worksheets("Bericht").Range("K2") = WorksheetFunction.CountA(Sheets(1).Columns("A:A"))
Es wird bezahlt und das Ergebnis in die Zelle geschrieben. In der Zielzelle hast du dann einen Wert, keine Formel.
Gruß Werner
Bei der Level-Angabe derartige Hilfe?! orT
11.10.2016 13:23:51
Luc:-?
Gruß, Luc :-?
Anzeige
Total alles falsch, ...
11.10.2016 13:20:09
Luc:-?
…Hartmut!
Was soll eine (engl) WorksheetFunction für VBA in einer ZellFml, noch dazu in einer lokalen also dt? Das verursacht aber nicht den Fehler, denn VBA ist es egal, was du in eine Zelle schreibst. Darauf reagiert dann Xl! Primär sind es die nicht verdoppelten " um A:A, wodurch der Text 2teilig wird ohne das A:A irgendwie eingebunden wird.
Wer derart grobe Fehler und dann noch SyntaxFehler macht, hat von VBA (und ggf überhpt von Pgmmierung) keine Ahnung und sollte sich nicht als gut einschätzen! Da du das aber getan hast, solltest du nun auch allein darauf kommen, wie es richtig ist.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: CountA per VBA in Zelle schreiben
11.10.2016 13:20:27
UweD
Hallo
du mischst hier Sachen.
FormulaLocal erwartet (bei deutschem Excel) auch die Formel in Deutsch
Desweiteren weist du der Zelle keine Formel zu, sondern versuchst eine Mischung aus der Berechnung in VBA aber als Formel dort zuzuweisen.
So wäre es richtig..
Worksheets("Bericht").Range("K2").FormulaR1C1 = "=COUNTA(Tabelle2!C[-10])"
oder in Standard
Worksheets("Bericht").Range("K2").Formula = "=COUNTA(Tabelle2!A:A)"
oder in deutsch
Worksheets("Bericht").Range("K2").FormulaLocal = "=ANZAHL2(Tabelle2!A:A)"
LG UweD
Anzeige
Hast du sein VBA-Level gesehen? Gruß owT
11.10.2016 13:24:47
Luc:-?
:-?
AW: Hast du sein VBA-Level gesehen? Gruß owT
11.10.2016 13:47:31
Hartmut_M
Hallo, vielen Dank für eure Tipps.
@Werner und Uwe: Die Hinweise haben mir wirklich etwas gebracht, damit komme ich weiter.
Herzlichen Dank.
@Luc: Danke auch dir für die konstruktive Hilfe. Habe leider versäumt, mich vorher im Forum schlau zu machen, ab wann man sich in VBA als gut bezeichnen kann. Gelobe Besserung und werde daran arbeiten, deinen Level zu erreichen. ;-)
Gruß Hartmut
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
11.10.2016 13:50:55
Werner
Wer derart triviale Fehler macht, kann einfach ...
11.10.2016 15:04:44
Luc:-?
…nicht gut sein und sollte als Frager nach solch Trivialem, wobei einem schon die Xl- und VBE-Hilfe Antwort geben kann, bescheidener auftreten!
Luc :-?
AW: Wer derart triviale Fehler macht, kann einfach ...
11.10.2016 15:12:24
Hartmut_M
Ja, genau, Bescheidenheit war schon immer mein Problem. :-)
Wünsche dir noch einen schönen Tag. Bin jetzt raus!
Anzeige
...Und noch etwas:
11.10.2016 15:41:26
Luc:-?
(Auch f.Werner, der sonst so eifrig darin ist, CrossPoster „dingfest“ zu machen, und Uwe)
VBA gut ist das zweithöchste einstellbare VBA-Level, das auch die größte Anwendungs­breite hätte, weil sich hier die meisten VBA-Kundigen Antworter bei Bedarf ein­ordnen würden. Die Frage und die gezeigte Code­Zeile liegt aber knapp auf bzw sogar unter dem Niveau des Levels VBA-Basis­kenntnisse.
Luc :-?
Anzeige
AW: Und was möchtest du mir damit mitteilen?
11.10.2016 16:07:52
Werner
Hallo Luc,
das ist mir nämlich nicht ganz klar.
Gruß Werner
Sollte es aber, ...
12.10.2016 15:45:40
Luc:-?
…Werner; ;-]
nämlich, dass du erstaunlich nachsichtig mit jemand (im Ggsatz zu CPern) bist, der VBA-gut sein will, aber eine CodeZeile einstellt und nachfragt, die bestenfalls VBA-Basiskenntnis-Niveau zeigt. So etwas sieht man nur sehr selten und in Verbindung mit dem angegebenen Level habe ich das wohl auch noch nie gesehen…
Gruß, Luc :-?
Anzeige
AW: Sollte es aber, ...
12.10.2016 16:02:36
Werner
Hallo Luc,
mit CP habe ich durchaus Nachsicht. Mir geht es nur darum, dass die Helfer auch wissen, dass anderweitig möglicherweise auch noch Andere am gleichen Problem dran sind. Was mich bei den CP nur ärgert ist, dass die Beiträge in den unterschiedlichen Foren nicht miteinander verlinkt sind. Wenn dem so wäre, dann könnte ja jeder für sich entscheiden ob er helfen will oder nicht.
Und zum Level -naja. Alles eine Frage des Standpunktes. Ich mache Excel nur hobbymäßig. In meinem Bekannten/Kollegenkreis wäre ich aber sowohl in Excel als auch in VBA der absolute Profi. Lege ich die Helfer hier im Forum als Messlatte an, dann bin ich wohl kaum über das Säuglingsalter raus.
Gruß Werner
Anzeige
Na, na, dass manche auch immer untertreiben ...
12.10.2016 19:27:24
Luc:-?
…müssen, Werner… ;-)
Und dann ist es doch doppelt ärgerlich, wenn da einer so daher kommt und einfach das zweithöchste VBA-Level für sich reklamiert. Diese Angabe dient doch eigentlich nur dazu, uns zu sagen, wie sehr unsere AW ggf ins Detail gehen muss.
Und bei den CPern ist es wie im Allgemeinen — Links wdn von Fragern kaum mal gesetzt, nicht mal zu vorher­gehenden BTen. Und da heißt es immer, die jungen Dynamischen kennen sich mit dem Internet besser aus als die unflexiblen Alten. Das scheint aber das, auf dem das beruht, nicht zu umfassen… :->
Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

CountA mit VBA in Excel richtig anwenden


Schritt-für-Schritt-Anleitung

Um die Anzahl der nicht leeren Zellen in einer bestimmten Spalte mit VBA zu zählen und das Ergebnis in eine Zelle zu schreiben, befolge diese Schritte:

  1. Öffne das Visual Basic for Applications (VBA) Fenster in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Schreibe den folgenden Code, um die COUNTA-Funktion zu verwenden:
Sub CountNonEmptyCells()
    Dim ws As Worksheet
    Set ws = Worksheets("Bericht")

    ' Zähle die nicht leeren Zellen in Spalte A des ersten Blattes und schreibe das Ergebnis in Zelle K2
    ws.Range("K2").FormulaLocal = "=ANZAHL2(Tabelle2!A:A)" ' für deutsches Excel
End Sub
  1. Schließe das VBA-Fenster und führe das Makro aus (Alt + F8 > Makro auswählen > Ausführen).

Häufige Fehler und Lösungen

  • Fehler: "Formel in rot angezeigt"

    • Ursache: Du versuchst, eine Formel in einem falschen Format zuzuweisen.
    • Lösung: Nutze die korrekte Methode, um die COUNTA oder ANZAHL2-Funktion zu verwenden. Beispiel:
      Worksheets("Bericht").Range("K2").FormulaLocal = "=ANZAHL2(Tabelle2!A:A)"
  • Fehler: Falsche Referenz auf Arbeitsblätter

    • Ursache: Das angegebene Arbeitsblatt existiert nicht oder hat einen anderen Namen.
    • Lösung: Stelle sicher, dass die Blattnamen korrekt sind.

Alternative Methoden

Neben der Verwendung von WorksheetFunction.CountA in VBA gibt es auch alternative Methoden, um die Anzahl der nicht leeren Zellen zu zählen:

  • Verwendung von WorksheetFunction direkt in einer Zelle:

    Worksheets("Bericht").Range("K2").Value = Application.WorksheetFunction.CountA(Sheets(1).Range("A:A"))
  • Direkte Verwendung der Excel-Funktion in der Zelle:

    Worksheets("Bericht").Range("K2").Formula = "=COUNTA(Tabelle2!A:A)"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die COUNTA-Funktion in VBA verwenden kannst:

  1. Zählen der nicht leeren Zellen in einem bestimmten Bereich:

    Sub CountInRange()
       Dim countResult As Long
       countResult = Application.WorksheetFunction.CountA(Sheets(1).Range("A1:A100"))
       Worksheets("Bericht").Range("K2").Value = countResult
    End Sub
  2. Zählen in verschiedenen Spalten:

    Sub CountMultipleColumns()
       Dim totalCount As Long
       totalCount = Application.WorksheetFunction.CountA(Sheets(1).Range("A:A")) + Application.WorksheetFunction.CountA(Sheets(1).Range("B:B"))
       Worksheets("Bericht").Range("K2").Value = totalCount
    End Sub

Tipps für Profis

  • Verwende FormulaR1C1, wenn du mit relativen Zellreferenzen arbeitest.
  • Nutze die Application.CountA-Methode, wenn du das Ergebnis direkt in eine Zelle schreiben möchtest, ohne eine Excel-Formel zu verwenden.
  • Achte immer darauf, dass die Regionseinstellungen von Excel mit den Formeln übereinstimmen, um Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die COUNTA-Funktion in einer nicht-deutschen Excel-Version verwenden? Verwende die englische Syntax:

Worksheets("Bericht").Range("K2").Formula = "=COUNTA(Tabelle2!A:A)"

2. Was ist der Unterschied zwischen COUNTA und COUNT? COUNTA zählt alle nicht leeren Zellen, während COUNT nur numerische Werte zählt.

3. Kann ich COUNTA auch für mehrere Blätter verwenden? Ja, du kannst die COUNTA-Funktion in einer Schleife für jedes Blatt aufrufen und die Ergebnisse summieren.

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