Nummer mit Jahreszahl beim öffnen Hochzählen
#11
Warum definierst du den Ihnhalt nich eifach als Zahl mit dem benutzerdefiniertern Fahelnformat "00-00"?

Dann geht ers ganz einfach mit:

Code:
Sub zähle_1_hoch()
Dim Jahr As Integer
Dim C1_Jahr As Integer

Jahr = Year(Now()) - 2000

C1_Jahr = Sheets("Tabelle1").Range("C1") Mod 100

If C1_Jahr = Jahr Then
   Sheets("Tabelle1").Range("C1") = Sheets("Tabelle1").Range("C1") + 100
Else
   Sheets("Tabelle1").Range("C1") = Jahr + 100
End If

'Workbook.Save

End Sub
Antworten Top
#12
Ja, das Me Problem habe ich auch schon gefunden und gelöst.
Mein "Gefühlsausbruch" war nur eine Bekräftigung um mein Vorhaben nochmal eindeutig zum Ausdruck zu bringen, da ich mich wie gesagt, nicht verstanden fühlte.
Das andere Problem ist mit dem Code aber nun auch gelöst, danke dafür, es funktioniert jetzt genau so wie ich es haben wollte.
Antworten Top
#13
(29.08.2022, 08:30)BuschB schrieb:
Code:
With ActiveWorkbook.Sheets("Tabelle1")
    If Right(ActiveWorksheet.Range("C1").Value, 2) = Jahr Then
        .Range("C1") = Left(ActiveWorksheet.Range("C1").Value, 2) + 1 & " - " & Jahr
Workbook.Save

End Sub
Und aus dem vorher Gesagten folgt:
Wenn du dich im Klassenmodul DieseArbeitsmappe bewegst, dann steht Me stellvertretend für das Workbook-Objekt, in dem der Code angesiedelt ist. 
Es ist daher nicht ratsam, innerhalb dieses Klassenmoduls mit ActiveWorkbook zu arbeiten, wenn man eigentlich die Mappe meint, in der der Code steht. Da nimmt man zur Sicherheit Me, denn in einigen Fällen kann ActiveWorkbook auf ein ganz anderes Workbook verweisen. 
Ebenso wenig gehört ActiveWorksheet in diesen Code. Erstens, weil es dieses nicht gibt, solange du keine gleichnamige Variable deklarierst. Zweitens, weil auch hier gilt: Das ActiveSheet kann ein ganz anderes sein als das, auf dem du arbeiten willst. 
Wie Workbook.Save dann richtig lauten müsste, muss ich jetzt nicht mehr erklären, das ergibt sich aus den vorhergehenden Hinweisen. 

Letzter Hinweis:
In einem Workbook gibt es die Sheets- und Worksheets-Auflistung. Referenziert man auf ein Worksheet, sollte man auch die Worksheets-Auflistung nutzen. In der Sheets-Auflistung tummeln sich nämlich alle Arten von Blättern, also z. B. auch Diagramme.
Antworten Top
#14
Hi,

Code:
Private Sub Workbook_Open()
Dim Jahr As String

Jahr = Format(Right(Year(Date), 2), "00")
Debug.Print Jahr
With Worksheets("Tabelle1")
    .Unprotect
    .Range("C1").NumberFormat = "@"
    If Right(.Range("C1"), 2) = Jahr Then
        .Range("C1") = Format(CLng(Left(.Range("C1"), 2)) + 1, "00") & " - " & Jahr
    Else
        .Range("C1") = Format(1, "00") & " - " & Jahr
    End If
End With
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#15
(30.08.2022, 08:53)BoskoBiati schrieb:
Code:
Jahr = Format(Right(Year(Date), 2), "00")
@Edgar
bis auf die Berechnung der Jahreszahl ist der Code identisch, oder habe ich was übersehen?
Antworten Top
#16
Hi EarlFred,

zwischen dem Lesen des Beitrags (ca. 8:00Uhr) und dem Einstellen des Codes verging einige Zeit, ohne das ich die Seite aktualisiert hatte. Deswegen habe ich die Beiträge dazwischen nicht gelesen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#17
Danke, Edgar, dann bin ich beruhigt. Ich dachte schon, meine Augen hätten mich nun vollends im Stich gelassen ;)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste