Clever-Excel-Forum

Normale Version: Komplexes zählverhalten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
(25.11.2023, 16:19)Ralf A schrieb: [ -> ]
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 And Target <> "" Then
    If Target.offset(,-1) = "" then
    Target.Offset(, -1) = Format(Date, "YYMM - ") & Format(Range("H1"), "000")
    Range("H1") = Range("H1") + 1
    End if
End If
End Sub

...naja, prüfe einfach, ob in Spalte A was steht.... hab den Code mal dahingehend angepasst....
Hallo Ralf


Danke für deine Mühen!
Also wenn ich das richtig verstanden habe kopiere ich den Code in das Steuerpanel.

Dann lege ich mir eine neue Tabelle an, nenne Sie Administrator und verändere dann deinen Code so, dass da wo H1 steht neu "Administrator!A2" steht.
So verlinke ich die Formel auf die Tabelle auf die Zelle A2, richtig?

Diese Admintabelle kann ich dann sperren.

Wenn ich jetzt in der Tabelle der Mitgliederliste einen neuen Namen in Spalte B eintrage wird in Spalte A "2311-" geschrieben und der Fehler:
"Laufzeitfehler '1004':
Die Methode 'Range' für das Objekt '_Workseet' ist fehlgeschlagen"

Was muss ich ändern?

Danke =)

MFG
...keine Ahnung, was Dein Steuerpanel ist. Der Code gehört in das Blatt, in das die ID's geschrieben werden sollen.
Und Range("H1") muss natürlich korrekt referenziert werden.

Code:
Worksheets("Administrator").Range("A2")

Es genügt, wenn Du das Adminblatt ausblendest, dann musst Du Dich nicht um den Blattschutz kümmern... oder... Du benutzt ihn und kümmerst Dich darum...  19
Also nocheinmal ich...


Wenn ich das richtig verstehe kopiere ich folgenden Code im Microsoft VBA in die Tabelle "Mitgliederliste" (Da liegt unsere Mitgliederliste):


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 And Target <> "" Then
    If Target.Offset(, -1) = "" Then
    Target.Offset(, -1) = Format(Date, "YYMM - ") & Format(Worksheets("Administrator").Range("A2"), "000")
    Range(Worksheets("Administrator").Range("A2")) = Range(Worksheets("Administrator").Range("A2")) + 1
    End If
End If
End Sub


Ist das richtig?

Dann muss ich in der Tabelle "Administrator" in Zelle A2 auch was eintragen oder gar nichts?

MFG
Moin!
Darf ich mal eine dämliche Frage stellen?
Da wir ja nicht im Film "Zurück in die Zukunft" sind:
Was spricht dagegen, nach 2311-013 manuell 2311-014 einzugeben?
Gut, man muss höllisch aufpassen, dass der Monat in der nächsten Woche wechselt und man "vollautomatisch" wieder bei 001 anfangen muss …
… habe ich nicht bedacht!

Gruß Ralf
Hey RPP63

Dagegen spricht nichts.

Nur bin ich bei solchen Dingen dann so, dass ich mich frage wieso manuell wenns auch automatisch geht =D

Aber recht hast du schon ja. Trotzdem wäre es nice wenns gehen würde.

MFG
(25.11.2023, 17:17)Cinderella schrieb: [ -> ]Dann muss ich in der Tabelle "Administrator" in Zelle A2 auch was eintragen oder gar nichts?

...die Antwort darauf kann man:
1. dem Code entnehmen oder
2. falls wider erwarten doch nicht, dann durch einfaches ausprobieren selbst herausfinden

Wie jetzt? Jeden Montag soll die Zählerei wieder bei 0 starten?

Also, in das Modul der Mitgliederliste:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 And Target <> "" Then
    If Target.Offset(, -1) = "" Then
        Application.EnableEvents = False
        With Sheets("Administrator")
            If WorksheetFunction.Weekday(Date, 1) = 2 And .Range("A2") > 0 Then .Range("A2") = 0
            Target.Offset(, -1) = Format(Date, "YYMM - ") & Format(.Range("A2"), "000")
            .Range("A2") = .Range("A2") + 1
        End With
    End If
End If
    Application.EnableEvents = True
End Sub
Hallo Ralf

Also mein Latein ist bei Programmierung definitiv zuende. In dem Code verseh ich gar nichts, tut mir leid.

Ich würde nicht fragen wenn ichs verstehen würde. Da merke ich einmal mehr das solche Dinge wohl eher Männern
vorenthalten sind... leider.

Nein, die zählerei soll einfach durchgehend weitergehen. Das macht keinen Sinn jeden Monat neu.

Jetzt kommt wieder eine Fehlermeldung

"Fehler beim Kompilieren: If-Block ohne End If"

Bin ich zu doof? Was mach ich falsch Undecided
...hat nix mit Frau oder Mann zu tun... ist 'ne Frage der Erfahrung....

Da hast Du vermutlich nicht den kompletten Code kopiert.... scroll mal im Codefenster bis zum End Sub nach unten.... da gehts weiter.... :)
Der war aber eh falsch, nimm den hier:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 And Target <> "" Then
    If Target.Offset(, -1) = "" Then
        Application.EnableEvents = False
        With Sheets("Administrator")
            If CInt(Mid(Target.Offset(-1, -1), 3, 2)) <> Month(Date) Then .Range("A2") = 0
            Target.Offset(, -1) = Format(Date, "YYMM - ") & Format(.Range("A2"), "000")
            .Range("A2") = .Range("A2") + 1
        End With
    End If
End If
    Application.EnableEvents = True
End Sub

Ist jetzt aber nun doch für jeden Monat neu. Ist auch besser so, so bist Du nicht auf 999 Mitglieder beschränkt...
Und wenn Du wissen willst, wieviele es sind, schaust Du einfach auf die letzte Zeilennummer.... :)
Hallo Ralf

Danke nochmals für Deine Hilfe.

Leider wird wieder ein Fehler ausgespielt

Der Debugger zeigt folgende Zeileteile als Falsch an:


If CInt(Mid(Target.Offset(-1, -1), 3, 2)) <> Month(Date) Then


Ist da ein Schreibfehler?

MFG
Seiten: 1 2 3 4