Automatischer Eintrag in DieseArbeitsmappe
Abend!
Also kurz meine Situation:
Wird in einem Excel-File ein Button betätigt, kommt ein kleines Anmeldeformular für einen neuen "Mitarbeiter".
Wenn alle Felder ausgefüllt sind und bestätigt wird, wird automatisch ein neues Tabellenblatt angelegt und mit einem Passwort gesichert. (manche Zellen halt, mit Formeln usw.)
Da in diesem ganzen Tabellenblatt Makros "arbeiten" muss ja unter "DieseArbeitsmappe" eine Vermerkt gemacht werden:
Wie schaffe ich es, dass nun, wenn das Anmeldeformular bestätigt wird, automatisch dieser Eintrag unter "DieseArbeitsmappe", mit dem Richtigen Arbeitsblattnamen hinzugefüght wird?
Info:
-) das Passwort ist für jedes Blatt gleich
-) es gibt ein Tabellenblatt "Mitarbeiter", in dem alle Mitarbeiter aufgelistet sind (under Spalte A) und jedes neu erstellt TB hat als Tabellenblattnamen seinen richtigen Namen, sprich einen Wert aus Spalte A vom Tabellenlatt "Mitarbeiter"
Wär toll, wenn mir hierbei wer helfen könnt!
LG Mike
Also kurz meine Situation:
Wird in einem Excel-File ein Button betätigt, kommt ein kleines Anmeldeformular für einen neuen "Mitarbeiter".
Wenn alle Felder ausgefüllt sind und bestätigt wird, wird automatisch ein neues Tabellenblatt angelegt und mit einem Passwort gesichert. (manche Zellen halt, mit Formeln usw.)
Da in diesem ganzen Tabellenblatt Makros "arbeiten" muss ja unter "DieseArbeitsmappe" eine Vermerkt gemacht werden:
ThisWorkbook.Worksheets("NeuerMitarbeiter1").Protect Password:="Passwort", UserInterFaceOnly:=True
Wie schaffe ich es, dass nun, wenn das Anmeldeformular bestätigt wird, automatisch dieser Eintrag unter "DieseArbeitsmappe", mit dem Richtigen Arbeitsblattnamen hinzugefüght wird?
Info:
-) das Passwort ist für jedes Blatt gleich
-) es gibt ein Tabellenblatt "Mitarbeiter", in dem alle Mitarbeiter aufgelistet sind (under Spalte A) und jedes neu erstellt TB hat als Tabellenblattnamen seinen richtigen Namen, sprich einen Wert aus Spalte A vom Tabellenlatt "Mitarbeiter"
Wär toll, wenn mir hierbei wer helfen könnt!
LG Mike
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148561
Url: https://administrator.de/contentid/148561
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo xaumichi!
Und warum schreibst Du nicht gleich beim Erstellen des neuen Tabellenblatts (AktiveSheet) die Codezeile mit rein?
Gruß Dieter
Und warum schreibst Du nicht gleich beim Erstellen des neuen Tabellenblatts (AktiveSheet) die Codezeile mit rein?
ActiveSheet.Protect Password:="Passwort", UserInterFaceOnly:=True |
Gruß Dieter
Hallo xaumichi!
Was hat der Schutz setzen/aufheben in dem Open-Erreignis verloren?
Natürlich kann man jetzt einen mords Code schreiben, der auch noch automatisiert VBA-Code einfügt, aber das ist mit einem riesen Aufwand verbunden und völlig unnötig.
Die normale Vorgehensweise wäre:
Neues Tabellenblatt erstellen, initialisieren und Blattschutz einmalig setzen.
Beim internen Bearbeiten der jeweiligen Mitarbeiterblätter vor einer Änderung explizit den Blattschutz aufheben und nach der Änderung sofort wieder setzen.
z.B. Diesen Code in ein Modul einfügen (= In Arbeitsmappe dann Public):
Bei einer Änderung dann z.B.:
Und wenn Dir das nicht sinnvoll erscheint und Du tatsächlich sowas machen willst, dann mach es über eine Each-Schleife:
Gruß Dieter
Was hat der Schutz setzen/aufheben in dem Open-Erreignis verloren?
Natürlich kann man jetzt einen mords Code schreiben, der auch noch automatisiert VBA-Code einfügt, aber das ist mit einem riesen Aufwand verbunden und völlig unnötig.
Die normale Vorgehensweise wäre:
Neues Tabellenblatt erstellen, initialisieren und Blattschutz einmalig setzen.
Beim internen Bearbeiten der jeweiligen Mitarbeiterblätter vor einer Änderung explizit den Blattschutz aufheben und nach der Änderung sofort wieder setzen.
z.B. Diesen Code in ein Modul einfügen (= In Arbeitsmappe dann Public):
Sub WksProtect(ByRef Wks) 'Tabellenblatt-Schutz aktivieren
Wks.Protect Password:="Passwort", UserInterFaceOnly:=True
End Sub
Sub WksUnprotect(ByRef Wks) 'Tabellenblatt-Schutz deaktivieren
Wks.Unprotect Password:="Passwort"
End Sub
Call WksUnprotect(Sheets("Mitarbeiter"))
'Änderungscode ausführen
Call WksProtect(Sheets("Mitarbeiter"))
Und wenn Dir das nicht sinnvoll erscheint und Du tatsächlich sowas machen willst, dann mach es über eine Each-Schleife:
For Each Wks In ThisWorkbook.Worksheets
If Wks.Range("XY") = "Einheitliches Merkmal eines Mitarbeiter-Tabellenblatts" Then
Wks.Protect Password:="Passwort", UserInterFaceOnly:=True
End If
Next
Gruß Dieter