Anzeige
Archiv - Navigation
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
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

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

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.

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

Anzeige
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

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

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige