Avatar billede folj Forsker
17. januar 2011 - 09:38 Der er 8 kommentarer og
1 løsning

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...
Avatar billede newbieatphp Nybegynder
17. januar 2011 - 12:32 #1
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"
Avatar billede folj Forsker
17. januar 2011 - 13:41 #2
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?
Avatar billede newbieatphp Nybegynder
17. januar 2011 - 13:50 #3
Hvad vil du have den til at gøre, hvis det bliver ændret?
Avatar billede folj Forsker
17. januar 2011 - 14:02 #4
jeg vil gerne lave en msgbox der popper op...
Avatar billede newbieatphp Nybegynder
17. januar 2011 - 14:44 #5
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
Avatar billede anlu Nybegynder
17. januar 2011 - 21:39 #6
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.
Avatar billede folj Forsker
21. januar 2011 - 16:10 #7
Tak for dine input "newbieatphp". Jeg blev ligt klogere på det, og jeg kan sikkert godt på glæde af at dine tips...

smider du lige et svar, så er der lidt points til dig...
Avatar billede folj Forsker
21. januar 2011 - 16:12 #8
Tak for dine input "newbieatphp". Jeg blev lidt klogere på det, og jeg kan helt sikkert godt få glæde af at dine tips...

smider du lige et svar, så er der lidt points til dig...
Avatar billede newbieatphp Nybegynder
21. januar 2011 - 16:18 #9
okay, super
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Metroselskabet og Hovedstadens Letbane

IT Applikationsmanager

Dynamicweb Software A/S

Tech Team Lead

Eltronic Group A/S

IT Supporter