Risolto Workbook_Open

xalbex

Utente junior
28 Febbraio 2019
36
3
8
29
Parma
2010
Best answers
4
Ciao ragazzi,

perché Excel non esegue all'apertura del file, la macro che riporto sotto?

Visual Basic:
Private Sub Workbook_Open()
    Dim a() As String
    Dim r As Integer, i As Integer, x As Integer, last_row As Integer
    
    'LISTA PER RAGGRUPPAMENTI
    i = 0
    With ThisWorkbook.Sheets("anagrafica")
        last_row = .Range("C:C").Find("*", , , , , xlPrevious).Row
        ReDim a(last_row)
        For r = 2 To last_row
            If .Cells(r, 3).Value <> .Cells(r - 1, 3).Value Then
                For x = 0 To i - 1
                    If .Cells(r, 3).Value = a(x) Then GoTo lineR
                Next x
                a(i) = .Cells(r, 3).Value
                i = i + 1
            End If
lineR:
        Next r
    End With
    'APPLICAZIONE CONVALIDA CELLA FAMIGLIA
    With ThisWorkbook.Sheets("riepilogo").Range("B1").Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:=Join(a, ",")
        .ShowError = False
    End With
End Sub
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
3.500
84
48
office pro 2010
Best answers
29
La prima cosa che puoi fare è renderti conto se, veramente, la subroutine non viene eseguita oppure, essa viene eseguita ma non te ne accorgi perche non fa quello che ti aspetti:

Nella riga 4, inserisci l i struzione:

Codice:
Msgbox "sto eseguendo la subroutine"
Stop
 
Reactions: xalbex

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
15.461
418
83
Como
2011MAC 2016WIN
Best answers
184
Ciao,
l'hai messa nel modulo di classe "Questa cartella di lavoro"?
 
Reactions: xalbex

xalbex

Utente junior
28 Febbraio 2019
36
3
8
29
Parma
2010
Best answers
4
La prima cosa che puoi fare è renderti conto se, veramente, la subroutine non viene eseguita oppure, essa viene eseguita ma non te ne accorgi perche non fa quello che ti aspetti:

Nella riga 4, inserisci l i struzione:

Codice:
Msgbox "sto eseguendo la subroutine"
Stop
Ciao draco, dopo provo, tuttavia sono quasi sicuro che non la esegue perché se provo ad eseguirla “manualmente” (con F8 per intenderci) dopo aver aperto il file, fa il suo dovere.
 

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
15.335
446
83
65
Napoli
2013
Best answers
206
xalbex @xalbex

In linea generale quando in una procedura evento questi vengono disabilitati se per un qualsiasi motivo la macro va in debug prima dell'istruzione di ripristino degli eventi è normale che poi la macro non funzioni più
 

xalbex

Utente junior
28 Febbraio 2019
36
3
8
29
Parma
2010
Best answers
4
perché Excel non esegue all'apertura del file, la macro che riporto sotto?
Hai provato a mettere un breakpoint sulla prima istruzione?
alfrimpa @alfrimpa non ho capito bene, però non ho gli eventi disabilitati Alfredo..😒
giulianovac @giulianovac Si, ma i breakpoint alla chiusura del file si eliminano da soli. Quindi poi all'apertura il codice non si blocca dove li avevi messi.😳
dracoscrigno @dracoscrigno ho provato anche col msgbox nella prima riga del codice...non mi compare all'apertura, quindi la macro non viene proprio eseguita.
A questo punto penso sia un problema del file.
Avevo provato a eliminare i dati sensibili per allegare il file alla discussione, ogliendo tutti i fogli non interessati alla macro.
Ho salvato, riaperto e la macro parte, funziona correttamente.
E' lo stesso file di questa discussione errore irreparabile.
Secondo me c'è qualcosa nell'anima del file che non va bene.
Adesso provo ad allegarlo integralmente cancellando tutti i dati sensibili.
 
Ultima modifica:

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
15.335
446
83
65
Napoli
2013
Best answers
206
@alfrimpa non ho capito bene, però non ho gli eventi disabilitati Alfredo..
Te l'ho spiegato.

Tu hai

Visual Basic:
Application.EnableEvents = False
      Istruzione1
      Istruzione2
      Istruzione3
Application.EnableEvents = True
Se per un qualsiasi motivo il codice andasse in debug su una delle istruzioni (1, 2 o 3) la successiva Application.EnableEvents = True non verrebbe eseguita e poichè l'abilitazione degli eventi è a livello Application successivamente le procedure evento (se questi non si riabilitano) non funzionano.
 
Reactions: xalbex

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
3.151
349
83
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
Best answers
192
Avevo provato a eliminare i dati sensibili per allegare il file alla discussione, ogliendo tutti i fogli non interessati alla macro.
Ho salvato, riaperto e la macro parte, funziona correttamente.
E' lo stesso file di questa discussione errore irreparabile.
Secondo me c'è qualcosa nell'anima del file che non va bene.
Vista questa descrizione, mi sento di essere d'accordo con te. Altre spiegazioni logiche non mi pare ce ne possano essere
 
Reactions: xalbex

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
3.500
84
48
office pro 2010
Best answers
29
L ultima cosa che puoi tentare è la prova dello stupido.
Si chiama così perchè serve ad escludere errori come quando cerchi il cappello e ce l hai già in testa.

Va dove si trova la procedura.
La cancalli copiandola negli appunti.( CTRL X) tutta, compresa l apertura e la chiusura della procedura. Quindi compreso PRIVATE SUB fino a, compreso, END SUB.

Dopo che l hai cancellata, vai in alto, ci sono due combobox, due tendine, in quella di destra deve esistere l' evento denominato OPEN.
Se non esiste, allora significa:
- Non ti trovi nel luogo giusto.
- stai vivendo una realtà curiosa dove hai involontariamente impostato qualche regola in excel per far si che non esegua macro in un determinato luogo... Hai provato a trasportarlo sull desktop?

Comunque... Fai la prova dello stupido. A me ha risolto innumerevoli problemi.
 

xalbex

Utente junior
28 Febbraio 2019
36
3
8
29
Parma
2010
Best answers
4
Ciao ragazzi,
avevo portato a casa una copia del file per pulirlo dai dati ed allegarlo alla discussione...
Scarico il file sul pc, lo apro e rullo di tamburi...mi spunta il msgbox che avevo messo come prova dietro suggerimento di dracoscrigno...la macro funzionava!
dracoscrigno @dracoscrigno anche se la prova dello stupido oltre a farmi molto ridere mi intrigava molto, una tua frase mi ha fatto riflettere...
Hai provato a trasportarlo sull desktop?
Il file in ufficio si trova in una cartella condivisa all'interno dell'intranet aziendale.
Il fatto che l'abbia portato a casa (quindi tolto dalla rete per metterlo in locale-nel mio pc) ha fatto in modo che il file "tornasse a funzionare"!
Sono quasi sicuro che il problema sia proprio questo.
Non so per quale strano motivo ma Excel tende a fare i capricci quando i file sono in rete.
Allora ho provato ad attivare il Solver che mi dava il problema che avevo esposto in questa discussione.
Anche in questo caso, problema dissolto nel nulla!
Sarebbe bello capire cosa da fastidio ad Excel dei file "in rete"....
Lunedì provero in ufficio a lavorare in una copia incollata nell'hard disk e non in rete...ma sono sicuro otterrò lo stesso risultato.
Ancora avvolto dal mistero, mi sento di chiudere la discussione perché abbiamo trovato la soluzione al problema NON LAVORARE IN RETE...
Anche se non ottimale e spero non definitiva, perché lavorare in file all'interno delle intranet aziendali è sempre una buona abitudine perché evita la perdita di dati nel computer a causa di eventuali virus (mi è già successo!), è la soluzione migliore al problema per adesso.
Ciao e buon venerdì sera!
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
3.500
84
48
office pro 2010
Best answers
29
se devo tirarea ad indovinare si tratta di permessi di esecuzione... Curiosità...
La macro non viene eseguita e, allo stesso tempo non ti esce nemmenoun messaggino scritto da qualche parte?

comunque... hai gia controlloto in :
Opzioni -> centro protezione -> percorsi attendibili
ed anche le impostazioni in:
opzioni -> centro protezione -> documenti attendibili

... insomma, prima di dare al colpa alla rete, per la quale, comuqnue, puoi chiedere lumi al responsabile IT a meno che non lavori al portale del M5s che è implementato così bene che ti converrebbe dare fuoco alal scrivania...
vabbè... buone cose.
 

xalbex

Utente junior
28 Febbraio 2019
36
3
8
29
Parma
2010
Best answers
4
Ragazzi, non è nemmeno la rete il problema!

se devo tirarea ad indovinare si tratta di permessi di esecuzione... Curiosità...
La macro non viene eseguita e, allo stesso tempo non ti esce nemmenoun messaggino scritto da qualche parte?
Anche secondo me è un problema di permessi, tuttavia, ho contattato l'IT che mi ha fatto entrare come amministratore, ma niente anche così.

comunque... hai gia controlloto in :
Opzioni -> centro protezione -> percorsi attendibili
ed anche le impostazioni in:
opzioni -> centro protezione -> documenti attendibili
Ho contollato anche in Centro protezione, i percorsi attendibili includono la libreria dove è inserito il SOLVER che è il componente che da problemi.
Come documenti attendibili, nessuna anomalia.

Tuttavia ho notato che, se metto questa funzione:
Funzione annoAggiustato inserita in un Moduloo:
Public Function annoAggiustato(uData As Date) As Integer

Application.Volatile False

Dim fineMese As Date, numeroGiorno As Integer

fineMese = Application.WorksheetFunction.EoMonth(uData, 0)
numeroGiorno = Weekday(uData, vbMonday)

If Month(uData) = 12 And (numeroGiorno = 1 Or numeroGiorno = 2) And (Day(uData) = fineMese - 1 Or Day(uData) <= fineMese) Then
    annoAggiustato = Year(DateAdd("d", 3 - numeroGiorno, uData))
ElseIf Month(uData) = 1 And numeroGiorno >= 4 And numeroGiorno <= 7 And Day(uData) >= 1 And Day(uData) <= 4 Then
    annoAggiustato = Month(DateAdd("d", -numeroGiorno + 1, uData))
Else
    annoAggiustato = Year(uData)
End If

End Function
in un modulo a parte il file va in crash, se la metto in un modulo in cui ci sono altre funzioni, il sistema va liscio come l'olio pur avendo Solver attivato, pur essendo inserito in un disco di rete.

Vi tengo aggiornati se capisco il problema.
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!