Mauro Gamberini
2010-12-21 16:02:42 UTC
... no, non al posto di Range(), altra cosa.
Tutti(forse) sappiamo che non è possibile
modificare runtime la proprietà (Name) di un foglio
((Name) eh, non la proprietà Name).
Mi è capitato fra le mani un vecchio post di Roberto Restelli.
Provate questa:
Public Sub m()
Foglio1.[_CodeName] = "Pippo"
End Sub
o questa:
Public Sub m()
Dim sh As Worksheet
Set sh = ThisWorkbook.Worksheets("Foglio2")
With sh
.[_CodeName] = "Pluto"
End With
Set sh = Nothing
End Sub
Qui sotto alcuni commenti esplicativi di Roberto:
<Roberto>
Ufficialmente, non è possibile.
La proprietà "Worksheet.Name" (come illustrato nel mio esempio di codice
inviato in precedenza) agisce sulla proprietà "Name" che vedi nella finestra
delle proprietà, ed è in lettura/scrittura (cioè puoi leggerlo e
modificarlo).
Per accedere alla proprietà "(name)" nella finestra delle proprietà bisogna
agire sulla proprietà "Worksheet.CodeName" che invece è a sola lettura
(quindi significa che puoi leggerla ma non cambiarla).
Esiste però una possibilità! Esiste una proprietà di interfaccia per
l'oggetto "Worksheet" che è nascosta, ed è la proprietà "_CodeName". Tale
proprietà è nascosta perchè viene utilizzata normalmente solo da Excel (per
esempio quando in modalità di progettazione con il VisualBasicEditor si
interviene tramite finestra delle proprietà su "(name)" ).
Passiamo quindi a gestire il codice in maniera *speciale* utilizzando metodi
e proprietà che potrebbero non essere ufficialmente supportati e che
potrebbero variare con le diverse versioni di Excel. Parliamo quindi di
utilizzare un "trucco", e questo è il codice:
===================
'...
Dim oFoglio As Worksheet
Set oFoglio = ActiveWorkbook.Worksheets.Add
oFoglio.[_CodeName] = "Pippo"
'...
====================
Le parentesi quadre sono obbligatorie in quanto il carattere underscore
("_") non è utilizzabile nella normale sintassi di Visual Basic (e VBA).
Attenzione in ogni caso all'utilizzo di questo codice: formalmente non è
supportato! :-p
</Roberto>
Così, tanto per ricordare..... ;-)
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
Tutti(forse) sappiamo che non è possibile
modificare runtime la proprietà (Name) di un foglio
((Name) eh, non la proprietà Name).
Mi è capitato fra le mani un vecchio post di Roberto Restelli.
Provate questa:
Public Sub m()
Foglio1.[_CodeName] = "Pippo"
End Sub
o questa:
Public Sub m()
Dim sh As Worksheet
Set sh = ThisWorkbook.Worksheets("Foglio2")
With sh
.[_CodeName] = "Pluto"
End With
Set sh = Nothing
End Sub
Qui sotto alcuni commenti esplicativi di Roberto:
<Roberto>
Ufficialmente, non è possibile.
La proprietà "Worksheet.Name" (come illustrato nel mio esempio di codice
inviato in precedenza) agisce sulla proprietà "Name" che vedi nella finestra
delle proprietà, ed è in lettura/scrittura (cioè puoi leggerlo e
modificarlo).
Per accedere alla proprietà "(name)" nella finestra delle proprietà bisogna
agire sulla proprietà "Worksheet.CodeName" che invece è a sola lettura
(quindi significa che puoi leggerla ma non cambiarla).
Esiste però una possibilità! Esiste una proprietà di interfaccia per
l'oggetto "Worksheet" che è nascosta, ed è la proprietà "_CodeName". Tale
proprietà è nascosta perchè viene utilizzata normalmente solo da Excel (per
esempio quando in modalità di progettazione con il VisualBasicEditor si
interviene tramite finestra delle proprietà su "(name)" ).
Passiamo quindi a gestire il codice in maniera *speciale* utilizzando metodi
e proprietà che potrebbero non essere ufficialmente supportati e che
potrebbero variare con le diverse versioni di Excel. Parliamo quindi di
utilizzare un "trucco", e questo è il codice:
===================
'...
Dim oFoglio As Worksheet
Set oFoglio = ActiveWorkbook.Worksheets.Add
oFoglio.[_CodeName] = "Pippo"
'...
====================
Le parentesi quadre sono obbligatorie in quanto il carattere underscore
("_") non è utilizzabile nella normale sintassi di Visual Basic (e VBA).
Attenzione in ogni caso all'utilizzo di questo codice: formalmente non è
supportato! :-p
</Roberto>
Così, tanto per ricordare..... ;-)
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/