Rendere dei fogli pubblici
Hai un problema con Excel? 
Rendere dei fogli pubblici
di Silvana (utente non iscritto) data: 06/03/2011
Ciao a tutti del forum,
spero di aver postato nella sezione giusta.
vorrei evitare di inserire in varie macro i nomi dei fogli a cui fanno riferimento i miei dati
questo è solo un esempio, e di queste macro
ne ho tante, come posso dichiarare i nomi dei
fogli una sola volta e renderli visibili a tutte le macro?
spero siate gentili ad aiutarmi
Modulo1
Macro1
Sub Capi ()
Dim Mge As Worksheet
Dim Imo As Worksheet
Set Mge = Worksheets("Maglie")
Set Imo = Worksheets("Intimo")
Mge.Range(“A1”).value = “Large”
Mge.Range(“A2”).value = “Small”
Imo.Range(“A1”).value = “Calze Reggenti”
Imo.Range(“A2”).value = “Reggiseno”
End Sub
macro 2
Sub Altro ()
Dim Pli As Worksheet
Dim Spe As Worksheet
Set Pli = Worksheets("Pantaloni-Donna")
Set Spe = Worksheets("Scarpe-Donna")
Pli.Range(“A1”).value = “Large”
Pli.Range(“A2”).value = “Small”
Spe.Range(“A1”).value = “37”
Spe.Range(“A2”).value = “38”
End Sub
|
di Mik (utente non iscritto) data: 07/03/2011
Ciao silvana,
prova a dichiarare come pubbliche le variabili, fuori dalla macro ed esattamente in testa al modulo1
poi basta settarle la prima volta.. io le setterei nell'evento "load" del documento excel...
set mge = worksheets("maglie")
set imo = worksheets("intimo")
ciao
Modulo1
Public Dim Mge As Worksheet
Public Dim Imo As Worksheet
Macro1
Sub Capi ()
...........
........... |
di Silvana (utente non iscritto) data: 07/03/2011
Ciao,
molto carino per la risposta :)
dichiarandole come public così mi genera errore,
è possibile?
mi puoi suggerire meglio con il vba sono un pochino
a terra
Modulo 1
Public Dim Mge As Worksheet
Public Dim Imo As Worksheet
Sub capi()
End Sub
Inserito nel foglio ThisWorkBook:
Private Sub Workbook_Open()
Dim Mge As Worksheet
Set Mge = Worksheets("Maglie")
End Sub
|
di Mik (utente non iscritto) data: 07/03/2011
Perdonami, l'ho scritto al volo ..
per le dichiarazioni "public" non c'è bisogno di "dim", quindi togli 'dim' così:
appena testato...
ciao
Public Mge As Worksheet
Public Imo As Worksheet |
di Silvana (utente non iscritto) data: 07/03/2011
Perdonami,
o sono tarda io oppure non so
mi esce errore:
variabile oggetto o variabile del blocco with
non impostata
ho fatto cosi:
dove sbaglio se ti può servire ho excel 2007
spero tu possa risolvere il problema
ciao
silvana :)
Inserito nel foglio ThisWorkBook:
Private Sub Workbook_Open()
Dim Mge As Worksheet
Set Mge = Worksheets("Maglie")
End Sub
Nel Modulo1:
Public Mge As Worksheet
Sub Capi()
Mge.Range("A1").Value = "Large"
End Sub |
di Mik (utente non iscritto) data: 07/03/2011
Hai dichiarato due volte la stessa variabile...dalla sub workbook_open() togli questa dichiarazione:
dim mge as worksheet
poi ricorda che il "set", che hai giustamente inserito in workbook_open(), verrà eseguito solo la prima volta all'apertura del documento, quindi se magari poi annulli l'esecuzione delle macro, vieni a perdere tale riferimento...
questa è la modifica senza la doppia dichiarazione:
Inserito nel cartella di lavoro ThisWorkBook:
Private Sub Workbook_Open()
Set Mge = Worksheets("Maglie")
End Sub
Nella intestazione del Modulo1:
Public Mge As Worksheet
Sub Capi()
Mge.Range("A1").Value = "Large"
End Sub |
di Silvana (utente non iscritto) data: 07/03/2011
Ok fatto come detto tu ed ora funziona
per questo ti ringrazio:)
spero sei ancora collegato e leggi ancora,
l'evento set è possibile metterlo in modo
che non debba essere collegato all'apertura
del documento?
onde evitare di aprire e chiudere il file per riprendere
i riferimenti?
non so se mi sono spiegata bene
ciao silvana :)
di Mik (utente non iscritto) data: 12/03/2011
Ciao
se ci sei ancora, ti posso far provare così: (sul mio excel 2010 funziona )
togli tutto il precedente da open e da set, e metti questa funzione nel modulo..
ciao
'' da inserire Nell' intestazione del Modulo1:
Function Mge() As Worksheet
Set Mge = Worksheets("Maglie")
End Function
Sub Capi()
Mge.Range("A1").Value = "Large"
End Sub |
di Silvana (utente non iscritto) data: 14/03/2011
Eccomi ancora qua,
pensavo ti fossi dimenticata di me :)
ho fatto come hai detto va bene se metto solo
un foglio, ma se volessi metterne di più esce
un messaggino carino "necessario un oggetto"
secondo le mie prove devo mettere più righe
per ogni foglio ?
Function mge() As Worksheet
Set mge = Worksheets("Maglie")
End Function
Function Imo() As Worksheet
Set Imo = Worksheets("Intimo")
End Function
Sub Capi()
mge.Range("A1").Value = "Large"
Imo.Range("A1").Value = "Reggiseno"
End Sub
|
di Mik (utente non iscritto) data: 14/03/2011
No... non mi sono dimenticato...
ultimamente sono impegnato (per non dire impazzendo) sull'altro frote con vb.net 2010
tornando a noi, dovresti creare ogni funzione per ogni foglio/variabile che intendi utilizzare...
ho provato l'ultimo codice che hai postato, e va bene..
purtroppo tutto questo si poteva evitare se microsoft si decidesse a creare (magari) un evento generato ogni qualvolta che si avvia l'ambiente macro in vba..così potremmo inserire lì tutto ciò che a noi è indispensabile..per esempio variabili pubbliche
ciao, un bacio
di Silvana (utente non iscritto) data: 14/03/2011
Sei stato molto gentile
grazie per la tua pazienza
un bacio anche a te
silvana
Vuoi Approfondire?