Avatar billede tvc Seniormester
04. februar 2011 - 17:51 Der er 9 kommentarer og
1 løsning

VBA navngivning af fane ved deaktivering

En der kan hjælpe mig med hvorfor denne ikke virker?

Private Sub Worksheet_Deactivate()
    Ark3.Name = Range("Ark3")
End Sub
Avatar billede anlu Nybegynder
04. februar 2011 - 19:28 #1
Det burde virke hvis "Ark3" er et defineret navn der refererer til en enkelt celle. Men ellers så giver Range("Ark3") ikke mening. Hvad prøver du at gøre? Hvor skal den læse navnet fra?
Avatar billede tvc Seniormester
05. februar 2011 - 10:30 #2
Jeg har en celle med navn "Ark3", hvor navnet "Forside" står i.
Avatar billede anlu Nybegynder
05. februar 2011 - 10:57 #3
Jeg kan ikke umiddelbart se hvorfor det ikke skulle virke. Du er lige nødt til at give lidt flere informationer.

- Får du en fejlmeddelelse (hvilken)? Eller bliver navnet bare ikke sat?
- Arket der skal omdøbes hedder vel "Ark3" i VBA-editoren?
- Er det ved Deactivate af ark3 selv at navnet skal ændres - eller hvilket ark ligger koden i?
- Hvilket ark ligger "Ark3"-cellen i?
Avatar billede store-morten Ekspert
06. februar 2011 - 11:58 #4
Hvis der på Ark1 er en celle der er bødt "Ark3" sætter denne navnet på Ark3
når andet Ark vælges, hvis koden ligger på Ark1:

Private Sub Worksheet_Deactivate()
    Ark3.Name = Range("Ark3")
End Sub

Hvis koden ligger på Ark2 eller andet? så prøv:

Private Sub Worksheet_Deactivate()
    Ark3.Name = Ark1.Range("Ark3")
End Sub
Avatar billede anlu Nybegynder
06. februar 2011 - 15:35 #5
Ja, store-morten har formentlig identificeret årsagen, som jeg prøvede at spørge mig frem til :o)
Avatar billede tvc Seniormester
07. februar 2011 - 19:27 #6
Tak store-morten og undskyld det udeblivne svar til dig anlu.

Det virker helt efter hensigten, men undre mig over at navngivningen af en celle ikke gælder over hele VBA når den ellers virker i hele Excelmappen.

Lægger du et svar store-morten?
Avatar billede anlu Nybegynder
07. februar 2011 - 20:18 #7
Helt ok for mig - jeg kunne også bare have været mere direkte i stedet for at skulle være 100% sikker på at jeg havde ret i min antagelse :o)

Men til din kommentar om at navngivningen af cellen ikke gælder over hele VBA, så hænger det nok snarere sammen med at Range-objektet referer til et sheet. Man kan referere til navnet via Name-objektet uden at vide hvilket sheet det ligger på, fx:

    Dim nm As Name
    Set nm = ActiveWorkbook.Names("Ark3")
    Ark3.Name = nm.RefersToRange.Value
Avatar billede store-morten Ekspert
07. februar 2011 - 20:44 #8
Kan vi ikke dele point for fælles indsats ;-)
Avatar billede anlu Nybegynder
07. februar 2011 - 20:47 #9
Pyt med det - giv bare pointene til store-morten; jeg har ikke det store pointforbrug selv :)
Avatar billede tvc Seniormester
04. marts 2011 - 18:38 #10
Tak for hjælpen og forklaringen begge!
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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