Automatischen Zaehler beim Oeffnen in Excel

Hallo Experten,

gibt es eine einfache Moeglichkeit in einer Exceldatei einen Zaehler zu erstellen, der bei jedem Oeffnen hoch zaehlt?

Vielen Dank,
Bastian

Hallo Bastian!

gibt es eine einfache Moeglichkeit in einer Exceldatei einen
Zaehler zu erstellen, der bei jedem Oeffnen hoch zaehlt?

Die einfachste wäre, in irgend eine Zelle den Zähler zu schreiben und diesen beim Öffnen der Arbeitsmappe im entsprechenden Ereignis hochzuzählen. Wäre natürlich blöd, wenn ein Benutzer die Tabelle oder den Zelleneintrag löscht…

Dann könntest Du noch eine Dokumenteigentschaft setzen und diese ebenfalls beim Öffnen hochsetzen (über DieseArbeitsmappe.CustomDocumentProperties(„DeinZähler“)) Hätte vielleicht den Vorteil, dass diese nicht ganz so schnell aus Versehen gelöscht wird.

Also ungefähr so:

Private Sub Workbook\_Open()
 Dim lngZaehler As Long

On Error GoTo Err\_Workbook\_Open

 lngZaehler = DieseArbeitsmappe.CustomDocumentProperties("Zähler")
 DieseArbeitsmappe.CustomDocumentProperties("Zähler") = lngZaehler + 1

Err\_Workbook\_Open:
 Select Case Err
 Case 0
 Case 5
 ' Eigenschaft gibt's noch nicht
 lngZaehler = 0
 DieseArbeitsmappe.CustomDocumentProperties.Add "Zähler", False, msoPropertyTypeNumber, lngZaehler
 Resume Next
 Case Else
 MsgBox "Fehlercode:" & Chr$(9) & Err & Chr$(13) \_
 & "Fehler:" & Chr$(9) & Chr$(9) & Error$ & Chr$(13) \_
 & "Modul:" & Chr$(9) & Chr$(9) & "DieseArbeitsmappe" & Chr$(13) \_
 & "Funktion:" & Chr$(9) & "Workbook\_Open", \_
 vbInformation, "Fehler"
 Resume Err\_Workbook\_Open
 End Select
End Sub

Analoges gilt natürlich auch für die Verwendung des Zählers in einer beliebigen Zelle…

Gruß, Manfred

Hallo Manfred,

da ich der einzige waere, der diese Mappe benutzen wuerde, habe ich keine Bedenken wegen des Loeschens.

Aber wenn ich den Code unten sehe, habe ich ja doch so meine Bedenken, diesen anzuwenden. Wie baue ich diesen denn jetzt ein?

Danke nochmal!

Die einfachste wäre, in irgend eine Zelle den Zähler zu
schreiben und diesen beim Öffnen der Arbeitsmappe im
entsprechenden Ereignis hochzuzählen. Wäre natürlich blöd,
wenn ein Benutzer die Tabelle oder den Zelleneintrag löscht…

Dann könntest Du noch eine Dokumenteigentschaft setzen und
diese ebenfalls beim Öffnen hochsetzen (über
DieseArbeitsmappe.CustomDocumentProperties(„DeinZähler“))
Hätte vielleicht den Vorteil, dass diese nicht ganz so schnell
aus Versehen gelöscht wird.

Also ungefähr so:

Private Sub Workbook_Open()
Dim lngZaehler As Long

On Error GoTo Err_Workbook_Open

lngZaehler =
DieseArbeitsmappe.CustomDocumentProperties(„Zähler“)
DieseArbeitsmappe.CustomDocumentProperties(„Zähler“) =
lngZaehler + 1

Err_Workbook_Open:
Select Case Err
Case 0
Case 5
’ Eigenschaft gibt’s noch nicht
lngZaehler = 0
DieseArbeitsmappe.CustomDocumentProperties.Add „Zähler“,
False, msoPropertyTypeNumber, lngZaehler
Resume Next
Case Else
MsgBox „Fehlercode:“ & Chr$(9) & Err & Chr$(13) _
& „Fehler:“ & Chr$(9) & Chr$(9) & Error$ & Chr$(13)
_
& „Modul:“ & Chr$(9) & Chr$(9) &
„DieseArbeitsmappe“ & Chr$(13) _
& „Funktion:“ & Chr$(9) & „Workbook_Open“, _
vbInformation, „Fehler“
Resume Err_Workbook_Open
End Select
End Sub

Analoges gilt natürlich auch für die Verwendung
des Zählers in einer beliebigen Zelle…

Gruß, Manfred

Hallo, Bastian!

da ich der einzige waere, der diese Mappe benutzen wuerde,
habe ich keine Bedenken wegen des Loeschens.

Wart’s ab. Was ich mir schon alles gelöscht habe, obwohl ich es nicht wollte…

Aber wenn ich den Code unten sehe, habe ich ja doch so meine
Bedenken, diesen anzuwenden. Wie baue ich diesen denn jetzt
ein?

Du machst Dein Excel auf. Dann drückst Du [Alt]+[F11]. Dann geht dieses komische VBA-Fenster auf. Links oben hast Du Dein VBA-Project. Dort suchst Du nach „DieseArbeitsmappe“. Darauf dann Doppelklick. Rechts hast Du das Code-Fenster; oben sind zwei Comboboxen. In der linken steht „(Allgemein)“, in der rechten „(Deklarationen)“.

Hier kannst Du den kompletten Code einfügen. Dann Datei schließen (speichern natürlich!) und wieder öffnen. Die nächste Frage: Wo und wie willst Du den Zähler angezeigt haben? Oder willst Du das nur zur Info irgendwo mitlaufen lassen?

Gruß, Manfred

1 „Gefällt mir“

Es ist eine Art firmeninternes Formular. Damit ich halt bei jedem Ausfuellen nicht immer daran denken muss den Zaehler (oder Formularnummer) hochzustellen, sollte dieser angezeigt werden. Wie stelle ich das denn an? Schon mal vielen Dank.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

automatisches speichern nicht vergessen?! owT
.

Hallo Bastian,

Es ist eine Art firmeninternes Formular. Damit ich halt bei
jedem Ausfuellen nicht immer daran denken muss den Zaehler
(oder Formularnummer) hochzustellen, sollte dieser angezeigt
werden. Wie stelle ich das denn an? Schon mal vielen Dank.

Ich schlage zwei Variante vor

Variante 1:
Du fügst via Einfügen --> Namen --> festlegen einen Namen z.B. „LfdNummer“ hinzu und trägst unter „bezieht sich auf“ den Startwert für die Zahlernummer ein z.B. =1

Den Zähler kannst Du im Tabelenblatt anzeigen, indem Du in eine Zelle die Formel
=LfdNummer
eingibst.

Mit folgendem Makro wird der Wert des Namens um 1 erhöht, wenn du die Datei öffnest. Die kleine Sicherheitsabfrage am Anfang kannst Du natürlich weglassen, wenn Du sie nicht brauchst

Private Sub Workbook\_Open()
 If MsgBox("Zähler um 1 erhöhen?", vbYesNo + vbDefaultButton1, "Formularzähler") = vbNo Then Exit Sub
 Dim Test As String, Testzahl As Long
 Test = ActiveWorkbook.Names("LfdNummer").Value
 Testzahl = Val(WorksheetFunction.Replace(Test, 1, 1, "")) + 1
 Test = "=" & Format(Testzahl, "0")
 ActiveWorkbook.Names.Add Name:="LfdNummer", RefersToR1C1:=Test
End Sub

Den Wert des Zählers kannst Du auch jederzeit wie oben beschrieben neu festlegen.

Variante 2 (etwas einfacher):
Du legst für die Zelle in der die FormularNummer angezeigt werden soll einen Namen fest: z.B. FormularNr

Mit folgendem Makro wird der Wert der Zelle beim Öffnen immer um 1 erhöht. Sicherheitsabfrage ggf. weglassen.

Private Sub Workbook\_Open()
 If MsgBox("Zähler um 1 erhöhen?", vbYesNo + vbDefaultButton1, "Formularzähler") = vbNo Then Exit Sub
 Range("FormularNr").Value = Range("FormularNr").Value + 1
End Sub

Gruß
Franz

1 „Gefällt mir“

Hallo Franz,

ich habe beide Loesungen ausprobiert und funktionieren. Ich habe mich dann aber fuer die 2 entschieden.

Vielen Dank fuer Deine Hilfe!

Bastian