Rendere dei fogli pubblici



  • 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