Registriert seit: 25.11.2021
Version(en): 2019, 365
(25.11.2023, 17: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
Registriert seit: 01.01.2023
Version(en): 365
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
Registriert seit: 25.11.2021
Version(en): 2019, 365
25.11.2023, 17:55
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 17:59 von Ralf A.)
...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...
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
Registriert seit: 01.01.2023
Version(en): 365
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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)
Registriert seit: 01.01.2023
Version(en): 365
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
Registriert seit: 25.11.2021
Version(en): 2019, 365
25.11.2023, 19:15
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 19:15 von Ralf A.)
(25.11.2023, 18: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
Registriert seit: 01.01.2023
Version(en): 365
25.11.2023, 19:18
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 19:21 von Cinderella.)
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
Registriert seit: 25.11.2021
Version(en): 2019, 365
25.11.2023, 19:38
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2023, 19:43 von Ralf A.)
...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
Registriert seit: 01.01.2023
Version(en): 365
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
|