Macro non funziona



  • Macro non funziona
    di beppexile data: 01/07/2015 11:38:31

    Rieccomi con un nuovo problema... mi direte che è una stupidata ma, vorrei aggiornare una label con una ipotetica versione del mio file, ad ogni ingresso in programmazione.
    Il problema è che il codice in questione non genera errori, ma comunque la caption della label nn varia più.
    In passato ho già usato questo codice per altri scopi è funzionava perfettamente.
    Ho cercato su internet ed ho trovato esattamente la stessa cosa, ma a me non funziona.
    Sto pensando seriamente che ho dei problemi su excel.
    Ditemi voi per favore, ecco il codice:
     
    Dim v As String
    Dim m As String
    Dim g As String
    Dim ver As String
    v = "Ver. 5"
    m = Month(Date)
    g = Day(Date)
    ver = v & "." & m & "." & g
    Label84.Caption = ver
    



  • di totygno71 data: 01/07/2015 11:49:50

    che errore e dove ti viene fuori?



  • di beppexile data: 01/07/2015 11:55:42

    Nessun errore. Semplicemente non cambia la caption della label.



  • di totygno71 data: 01/07/2015 12:13:56

    A me funziona.... Forse dipende da dove hai inserito il codice...
    E' all'interno della Userform in cui c'è la label84 ???
    Se non è problematico posta il file di esempio che vediamo...



  • di beppexile data: 01/07/2015 14:10:46

    Guarda, sto provando a reinstallare office.
    Dopo pranzo, ho riaperto il file, è adesso mi dice che mi mancano le librerie e non mi esegue più nulla!

    Allego il file.
    Dopo l'avvio, fai doppio click sulla label in basso a destra, quella col mio nome, ti chiederà una password che è "p" senza virgolette; si chiuderà la userform ed entrerai in programmazione.
    Il codice è proprio sul doppio click di quella label, è deve variare la caption della versione.




  • di beppexile data: 01/07/2015 14:28:15

    Metto anche il blocco di codice incriminato:
     
            Private Sub Label83_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                myValue = InputBox("Inserisci Password")
                If myValue = "p" Then
                    UserForm1_Avvio.Hide
                    With Application.VBE.MainWindow
                        .Visible = True
                        .SetFocus
                    End With
                    Dim m As String
                    Dim g As String
                    Dim v As String
                    Dim ver As String
                    m = Month(Date)
                    g = Day(Date)
                    v = "Ver. 5"
                    ver = v & "." & m & "." & g
                    Label84.Caption = ver
                Else
                    MultiPage1.SetFocus
                    Exit Sub
                End If
            End Sub
    



  • di scossa data: 01/07/2015 15:46:03

    prova ad inserire, dopo l'istruzione
    Label84.Caption = ver
    la seguente riga:
    Me.Repaint





    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di beppexile data: 01/07/2015 15:58:54

    niente da fare. la caption non cambia.



  • di Vecchio Frac data: 01/07/2015 16:31:57

    Secondo me è solo un problema di focus.
    Tu visibilizzi l'editor di codice poi tenti di cambiare la caption della label, ma è l'editor che ha il focus in quel momento, non il form. Posticipa quindi l'apertura dell'editor a un momento successivo e vediamo che succede.

    p.s. cosa ci fanno tutti quei "Dim" in mezzo alla sub? funziona ma non è stilisticamente corretto. Portali in cima alla sub. Vale per tutti i contesti.
     
            Private Sub Label83_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                Dim m As String
                Dim g As String
                Dim v As String
                Dim ver As String
    
                myValue = InputBox("Inserisci Password")
                If myValue = "p" Then
                    UserForm1_Avvio.Hide
                    m = Month(Date)
                    g = Day(Date)
                    v = "Ver. 5"
                    ver = v & "." & m & "." & g
                    Label84.Caption = ver
    
                    With Application.VBE.MainWindow
                        .Visible = True
                    End With
                Else
                    MultiPage1.SetFocus
                    Exit Sub
                End If
            End Sub






  • di scossa data: 01/07/2015 16:42:20

    Sicuramente è un problema di focus, e Me.Repaint deve essere eseguita quando il focus è sulla Userform, quindi non nella sub indicata.
    Purtroppo il file allegato da beppexile mi manda in crash Excel per cui non posso provare nulla.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di beppexile data: 01/07/2015 16:59:00

    Grazie per le correzioni ma niente da fare, ancora non funziona.



  • di totygno71 data: 01/07/2015 17:36:06

    Non ho modo di testarlo... Ma non può dipendere dal fatto che la userform in cui risiede la label sia già nascosta al momento del cambio di caption della label???



  • di Vecchio Frac data: 01/07/2015 18:59:53

    cit. " mi manda in crash Excel "
    ---> Sono andato a naso... A me non crasha ma si inzuppa di errori e non prosegue perchè ci sono riferimenti mancanti anche a librerie che non possiedo proprio... oltre a librerie che non ho voglia di installare ;)





  • di beppexile data: 02/07/2015 07:59:47

    salve raga, purtroppo per il discorso librerie avete ragione.
    a tal proposito, come faccio a capire quali realmente uso nel file?

    per rispondere a totygno71, ho modificato il codice come segue, ma non succede niente lo stesso
     
            Private Sub Label83_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                Dim m As String
                Dim g As String
                Dim v As String
                Dim ver As String
                myValue = InputBox("Inserisci Password")
                If myValue = "p" Then
                    m = Month(Date)
                    g = Day(Date)
                    v = "Ver. 5"
                    ver = v & "." & m & "." & g
                    Label84.Caption = ver
                    UserForm1_Avvio.Hide
                    With Application.VBE.MainWindow
                        .Visible = True
                        .SetFocus
                    End With
                Else
                    MultiPage1.SetFocus
                    Exit Sub
                End If
            End Sub
    



  • di beppexile data: 02/07/2015 08:18:02

    ho allegato una nuova versione del file, mi fate sapere se vi chiede librerie e se vi da errori?



  • di totygno71 data: 02/07/2015 09:26:17

    Nessun problema ora di librerie varie...
    prova così...
     
     Private Sub Label83_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                Dim m As String
                Dim g As String
                Dim v As String
                Dim ver As String
                myValue = InputBox("Inserisci Password")
                If myValue = "p" Then
                    m = Month(Date)
                    g = Day(Date)
                    v = "Ver. 5"
                    ver = v & "." & m & "." & g
                    Label84.Caption = ver
                                   
                Else
                    MultiPage1.SetFocus
                    Exit Sub
                End If
            End Sub



  • di beppexile data: 02/07/2015 09:42:41

    non funziona



  • di totygno71 data: 02/07/2015 11:15:56

    Non so come aiutarti, a me funziona perfettamente



  • di totygno71 data: 02/07/2015 11:37:41

    Per curiosità puoi provare il file che ti ho allegato e dirmi cosa non funziona?



  • di beppexile data: 02/07/2015 12:58:53

    be, il tuo file mi funziona.... che poi è uguale al mio.
    a sto punto lo sostituisco e continuo da qui.
    il codice era uguale, e se tolgo le stesse righe non funziona!
     
     Private Sub Label83_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                Dim m As String
                Dim g As String
                Dim v As String
                Dim ver As String
                myValue = InputBox("Inserisci Password")
                If myValue = "p" Then
                    m = Month(Date)
                    g = Day(Date)
                    v = "Ver. 5"
                    ver = v & "." & m & "." & g
                    Label84.Caption = ver
                    'UserForm1_Avvio.Hide
                    'With Application.VBE.MainWindow
                    '    .Visible = True
                    '    .SetFocus               
                Else
                    MultiPage1.SetFocus
                    Exit Sub
                End If
            End Sub



  • di beppexile data: 02/07/2015 13:07:05

    a questo punto mi è venuta un'idea.... ho inserito una pausa di un secondo ed ha funzionato!

    evidentemente i comandi di Caption della Label e Hide della Userform, essendo vicini, vengono processati quasi nello stesso istante, e quindi la form si chiude prima di che venga cambiata la cption della label...

    non trovo altre spiegazioni!

    comunque grazie, spunto come risolta!
     

     
            Private Sub Label83_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                    Dim m As String
                    Dim g As String
                    Dim v As String
                    Dim ver As String
                    myValue = InputBox("Inserisci Password")
                    If myValue = "p" Then
                        m = Month(Date)
                        g = Day(Date)
                        v = "Ver. 5"
                        ver = v & "." & m & "." & g
                        UserForm1_Avvio.Label84.Caption = ver
                        Application.Wait (Now + TimeValue("0:00:01"))
                        UserForm1_Avvio.Hide
                        With Application.VBE.MainWindow
                            .Visible = True
                            .SetFocus
                        End With
                    Else
                        UserForm1_Avvio.MultiPage1.SetFocus
                        Exit Sub
                    End If
            End Sub
    



  • di beppexile data: 02/07/2015 13:19:45

    Ho cantato vittoria troppo velocemente: la nuova Caption della Label non viene salvata!
    Succede anche nel file che mi hai mandato tu; dopo aver cliccato sulla "X" (chiudo e salvo), alla riapertura mi ritrovo il nome di prima.



  • di Vecchio Frac data: 02/07/2015 14:06:44

    cit. "la nuova Caption della Label non viene salvata! "
    ---> Ah ma ora ho capito cosa vuoi fare... bè per forza non viene salvata, la label si modifica solo per l'istanza in uso, quando chiudi e ripari la label ha il valore assegnato in fase di design (o nell'evento Initialize del form). Per rendere "persistente" la modifica devi scovare un modo per salvare l'informazione col file, che ne so: scrivi il nuovo valore in una cella remota o nascosta, e quando riapri Excel, al momento di attivare l'userform leggi prima di tutto tale cella e assegni alla label il valore pescato da lì.





  • di beppexile data: 02/07/2015 14:14:51

    Ciao Vecchio Frac.... infatti, sto modificando tutto per fare proprio così.
    Salvo la mia variabile su una cella del foglio, e poi carico la nuova caption dall'evento userform_inizialize prendendo il nuovo valore dalla cella.
    Tuttavia, pensavo si aggiornasse automaticamente in quel modo.
    Segno come risolta.



  • di totygno71 data: 02/07/2015 15:06:17

    Cit "Ho cantato vittoria troppo velocemente: la nuova Caption della Label non viene salvata! "

    La tua richiesta non comprendeva anche che venisse salvata!

    Cmq sono contento che hai risolto il tuo problema.
    Toty



  • di beppexile data: 02/07/2015 15:35:08

    Rispondo a totygno71.
    Il primo messaggio che ho inviato diceva:
    Cit. "...vorrei aggiornare una label con una ipotetica versione del mio file, ad ogni ingresso in programmazione."
    Pensavo fosse sottinteso il salvataggio del nuovo nome.
    Comunque grazie lo stesso per avermi dedicato il tuo tempo.

    e grazie a tutti voi!