Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Komplexes zählverhalten
#11
(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....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#12
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
Antworten Top
#13
...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
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#14
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
Antworten Top
#15
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#16
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
Antworten Top
#17
(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
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#18
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
Antworten Top
#19
...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.... :)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#20
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
Antworten Top


Gehe zu:


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