Discussion:
Umbenennen eines Tabellenblattes sperren
(zu alt für eine Antwort)
Mario
2004-06-21 22:31:45 UTC
Permalink
hi hat jemand eine Lösung für obriges Problem
Umbenennen eines Tabellenblattes sperren

Danke
mario
Melanie Breden
2004-06-22 06:29:11 UTC
Permalink
Hallo Mario,
Post by Mario
hi hat jemand eine Lösung für obriges Problem
Umbenennen eines Tabellenblattes sperren
jedes Arbeitsblatt hat neben einem Blattnamen, der auf den Registerreitern
zu sehen ist auch einen Codenamen.
Im Eigenschaftenfenster des Blattes findest du zwei mal die Name-Eigenschaft:
(Name) = Codename
Name= Blattname

Für meine Prozeduren habe ich den Codenamen des zu schützenden Blattes in 'Secret' geändert.
Füge folgende Deklarationen in ein Standardmodul deiner Arbeitsmappe ein:
Public wks As Worksheet
Public gstrTabName As String

und in das Codemodul DieseArbeitsmappe:

Private Sub Workbook_Open()
' hier Codename der Tabelle eintragen
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Application.EnableEvents = False
wks.Name = gstrTabName
Application.EnableEvents = True
End Sub

Beim Öffnen der Arbeitsmappe wird der Blattname in einer Variablen gespeichert.
Bei jeder Neuberechnung, also auch beim ändern des Blattnamens, wird
der gespeicherte Blattname neu geschrieben.
Man könnte zwar vorher noch prüfen, ob er sich überhaupt geändert hat,
aber das macht den Code nur langsamer und führt zum gleichen Ergebnis.

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Mario
2004-06-22 07:17:05 UTC
Permalink
Hallo Melanie
Danke für die Hilfe, leider bekomme ich beim ausführen von
Post by Melanie Breden
Private Sub Workbook_Open()
Secret
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub
eine Fehlermeldung beim Kompilieren "unzulässige verwendung von PRIVATE SUB
WORKBOOK_OPEN()
ich habe den Codenamen des Tabellenblattes auf Secret geändert. oder habe
ich das " ' hier Codename der Tabelle eintragen
" falsch verstanden?

lg Mario
Post by Melanie Breden
Hallo Mario,
Post by Mario
hi hat jemand eine Lösung für obriges Problem
Umbenennen eines Tabellenblattes sperren
jedes Arbeitsblatt hat neben einem Blattnamen, der auf den Registerreitern
zu sehen ist auch einen Codenamen.
Im Eigenschaftenfenster des Blattes findest du zwei mal die
(Name) = Codename
Name= Blattname
Für meine Prozeduren habe ich den Codenamen des zu schützenden Blattes in
'Secret' geändert.
Post by Melanie Breden
Public wks As Worksheet
Public gstrTabName As String
Private Sub Workbook_Open()
' hier Codename der Tabelle eintragen
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Application.EnableEvents = False
wks.Name = gstrTabName
Application.EnableEvents = True
End Sub
Beim Öffnen der Arbeitsmappe wird der Blattname in einer Variablen gespeichert.
Bei jeder Neuberechnung, also auch beim ändern des Blattnamens, wird
der gespeicherte Blattname neu geschrieben.
Man könnte zwar vorher noch prüfen, ob er sich überhaupt geändert hat,
aber das macht den Code nur langsamer und führt zum gleichen Ergebnis.
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Melanie Breden
2004-06-22 07:30:03 UTC
Permalink
Hallo Mario,
Post by Mario
Danke für die Hilfe, leider bekomme ich beim ausführen von
Post by Melanie Breden
Private Sub Workbook_Open()
Secret
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub
Der Codename muss nicht in einer Zeile einzeln stehen, sondern in die Syntax ersetzt werden.
Hier die gesamte Prozedur:

Private Sub Workbook_Open()
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Mario
2004-06-22 08:14:16 UTC
Permalink
Danke, naja VB-Syntax ist mir machman ein großes Rätsel und wannimmer ich
XLS VB benutze muss ich mich wieder von Anfang an einlesen.
Das Problem ist ich möchte die Arbeitsblätter vor unabsichtlichen Drittuser
schützen, und da viele meiner Makros mit den Einzelnen Tabellenblättern
zusammenhängen...
in deiner Version ist es möglich zb das TB umzubenennen danach zu
speichern/schließen - öffnen
gibt es keinen Worksheet_rename event den ich beeinflussen kann?
so ca:

Private Sub Worksheet_Change
MsgBox "umbenennen des Tabellenblattes " & Worksheet.Name & " leider
nicht möglich"
Event.undo
oder Event.cancel bzw nach dem Ändern sofort wieder austausch so wie in
deinem code
end sub

Vielen Dank
mario

gibt es eigenlich irgendwo eine Library-List wo alle Events beschrieben
sind?
Post by Melanie Breden
Hallo Mario,
Post by Mario
Danke für die Hilfe, leider bekomme ich beim ausführen von
Post by Melanie Breden
Private Sub Workbook_Open()
Secret
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub
Der Codename muss nicht in einer Zeile einzeln stehen, sondern in die Syntax ersetzt werden.
Private Sub Workbook_Open()
Set wks = ThisWorkbook.Worksheets([Secret].Name)
gstrTabName = wks.Name
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Melanie Breden
2004-06-22 08:55:14 UTC
Permalink
Hallo Mario,
Post by Mario
Das Problem ist ich möchte die Arbeitsblätter vor unabsichtlichen Drittuser
schützen, und da viele meiner Makros mit den Einzelnen Tabellenblättern
zusammenhängen...
dann sprich die Tabellenblätter im Code direkt über den Codenamen an:
' Tabellenname = Tabelle1, Codename = Secret
ThisWorkbook.Worksheets("Tabelle1").Range("A1") = Date
ThisWorkbook.Worksheets([Secret].Name).Range("A2").Value = Time
Post by Mario
in deiner Version ist es möglich zb das TB umzubenennen danach zu
speichern/schließen - öffnen
welche Excel-Version verwendest du?
Habe es in Excel2003 getestet, da ist es nicht möglich das Tabellenblatt umzubenennen.
Post by Mario
gibt es keinen Worksheet_rename event den ich beeinflussen kann?
Nein, so ein Ereignis gibt es leider nicht.
Deswegen bin ich ja auf das Calculate-Ereignis ausgewichen.
Falls dieses Ereignis in früheren Excel Versionen bei einem Namenswechsel nicht ausgelöst wird,
versuche es z.B. mit dem 'SheetSelectionChange' und dem 'BeforeSave'-Ereignis.
Post by Mario
gibt es eigenlich irgendwo eine Library-List wo alle Events beschrieben
sind?
In der OH werden auf den folgenden Seiten alle Ereignisse mit Beschreibung aufgeführt:
- Ereignisse für Workbook-Objekte
- Ereignisse des Worksheet-Objekts

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

Thomas Ramel
2004-06-22 08:27:30 UTC
Permalink
Grüezi Mario

Mario schrieb am 22.06.2004
Post by Mario
hi hat jemand eine Lösung für obriges Problem
Umbenennen eines Tabellenblattes sperren
Wie wäre es mit Menü: Extras --> Schutz --> Arbeitsmappe schützen -->
[x]Struktur.

Wenn notwendig, kannst Du das auch mit Passwort machen.
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win XP Pro SP-1 / xl2000 SP-3]
Loading...