Har ikke tid, men se dette tidl. indlæg til din/andres inspiration:
"Kan jeg forhindre rename af worksheet
----------------------------------------------------------
Oprettet man. d. 17. januar 2011 kl. 09:38:18 30 point uddelt | 9 kommentarer folj (7.390 point. Point ude: 0)
Kan jeg forhindre rename af worksheet
Hej Eksperter...
Jeg har en workbook kørende med menge forskellige brugere.
Der er tilknyttet en makro der automatisk opretter et nyt ark hver uge ud fra en worksheet der hedder "Skabelon". Hvis en af brugerne finder på at omdøbe arket skabelon, så vil makroen fejle derefter.
spørgsmålet:
Kan jeg på nogen måde forhindre at denne woeksheet("Skabelon") omdøbes - evt. kan jeg nøjes med en msgbox der gør opmærksom på at automatikken er afhængig af at den hedder "skabelon" og ikke andent.
kan den oplysning, at den i project-træet hedder "Sheet42(Skabelon)" evt. udnyttes til at kontrollere at den hedder det rigtige?
Venter spændt på svar...
---------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 12:32:27| #1 newbieatphp (3.605 point) Hvis brugerne ikke selv skal have mulighed for at ændre navne på arkene, så har du mulighed for at sætte projektmappebeskyttelse på.
Dette gør, at man ikke kan slette eller indsætte ark, og man kan ikke ændre navnene på arkene.
Når du så skal kører din makro for at kopiere skabelon, så fjerne du projektmappebeskyttelsen:
ActiveWorkbook.Unprotect
Og sætter den til efter alt er kørt igennem:
ActiveWorkbook.Protect Structure:=True, Windows:=False
hvis du vil have kode på, så brugeren ikke så "nemt" kan komme til at fjerne det, så hedder det:
ActiveWorkbook.Protect Password:="din kode", Structure:=True, Windows:=False
ActiveWorkbook.Unprotect Password:="din kode"
--------------------------------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 13:41:20| #2 folj (7.390 point) Er det ikke tænkeligt at oplysningen, om at den i project-træet hedder "Sheet42(Skabelon)" kan udnyttes til at kontrollere om den bliver omdøbt?
--------------------------------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 13:50:43| #3 newbieatphp (3.605 point) Hvad vil du have den til at gøre, hvis det bliver ændret?
--------------------------------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 14:02:46| #4 folj (7.390 point) jeg vil gerne lave en msgbox der popper op...
--------------------------------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 14:44:46| #5 newbieatphp (3.605 point) Jeg kan ikke finde noget direkte på, at når der bliver ændret arknavn. Men har sat den til at tjekke når arket bliver aktivt, inaktivt og der bliver ændret i arket.
Private Sub Worksheet_Activate()
Dim navn As String
navn = "Skabelon"
If Not Sheets(42).Name = navn Then
MsgBox "Du har ændret navnet på arket", vbCritical, "Arket har fået nyt navn"
'Sheets(42).Name = navn
End If
End Sub
Private Sub Worksheet_Deactivate()
Dim navn As String
navn = "Skabelon"
If Not Sheets(42).Name = navn Then
MsgBox "Du har ændret navnet på arket", vbCritical, "Arket har fået nyt navn"
'Sheets(42).Name = navn
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim navn As String
navn = "Skabelon"
If Not Sheets(42).Name = navn Then
MsgBox "Du har ændret navnet på arket", vbCritical, "Arket har fået nyt navn"
'Sheets(42).Name = navn
End If
End Sub
Denne kode skal ind under selve arket... Ark 42
--------------------------------------------------------------------------------
Skrevet man. d. 17. januar 2011 kl. 21:39:40| #6 anlu (5.730 point)
www.anlu.dk Hvis dit problem bare er at du i koden refererer til Worksheets("Skabelon"), så kan du i stedet referere til det interne navn som er sheet42.
Fx
Sheet42.Range("A1").value = 1
i stedet for
Worksheets("Skabelon").Range("A1").Value = 1
etc.
Og du kan også ændre det interne navn til at være noget mere sigende, jeg plejer at bruge prefixet ws, fx wsSkabelon. Du ændrer det interne navn i properties-arket, som du får vist ved at trykke F4 eller "View->Properties Window" i menuen.
Når du så klikker på dit skabelon-sheet kan du se i properties-vinduet at (Name) er lig Sheet42, hvilket du blot kan ændre til fx wsSkabelon.
Dette løser selvf. kun dit problem, hvis ikke du bruger "Skabelon"-navnet til andet end at referere til det specifikke worksheet.
----------------------------------------------------------------------