riconoscimento file di lavoro
Hai un problema con Excel? 
riconoscimento file di lavoro
di beppexile data: 09/11/2015 07:50:37
Buongiorno a tutti e scusate la domanda banale:
da cosa può dipendere il fatto che lavorando sul file "A" di excel, tutto funziona regolarmente, ma se apro un file "B" di excel, il codice VBA del file "A", macro, ecc, non mi trovano più i fogli del file dandomi errori vari, e, non appena chiudo il file "B", tutto riprende a funzionare?
Bisogna specificare il file da qualche parte nel codice? Se si, dove e come?
Grazie a tutti
di patel data: 09/11/2015 07:57:19
come al solito una domanda senza allegati, come si fa a risponderti ? probabilmente nel file A i fogli hanno un nome specifico, ne file B hai dimenticato di mettere gli stessi nomi.
di beppexile data: 09/11/2015 08:05:31
chiedo venia!
File allegato
quindi, se apri il file, funziona quasi tutto (a parte quello che ancora non ho fatto), ma se apri un qualsiasi altro file excel, il mio file non funziona più
di Marius44 data: 09/11/2015 08:47:29
Ciao Beppe,
nella Sub SettimanaLavaggio() alla fine l'anti sfarfallio (come lo chiami tu) non è stato reimpostato a TRUE pertanto lo schermo non si aggiorna, a meno non vai a lanciare un'altra macro che lo riporti a true.
Ciao,
Mario
di gdito data: 09/11/2015 09:24:44
Ciao Beppe,
il problema sta nel fatto che la macro cerca di lavorare sul foglio ATTIVO in quel momento, quindi se hai un documento aperto che non contiene i fogli con lo stesso nome di quelli su cui vuoi lavorare restituisce un errore.
Per risolvere il problema puoi usare il nome del Workbook aperto (il file). Puoi fare in questo modo:
in un modulo qualunqu, A_Carico ad esempio, crei una variabile che puoi chiamare FILE_LAVORO
Public FOGLIO_LAVORO
quindi nella funzione Workbook_Open() puoi assegnare il file corrente alla variabile, prima di "With Application"
FILE_LAVORO = ActiveWorkbook.Name
Quindi nei riferimenti ai range devi cambiare da (esempio preso da RICfrecciaSX)
B = Range("RIF_ULTIMARIGA_INS").Value
in
B = Workbooks(FILE_LAVORO).Worksheets("DATABASE").Range("RIF_ULTIMARIGA_INS").Value
Così hai un riferimento completo al file->foglio->cella e la macro non può sbagliare
@Marius44: hai ragione ma nel momento in cui la macro finisce le sue operazioni ScreenUpdating torna automaticamente a TRUE, il problema in questo caso sono i riferimenti ai fogli che non trova
di beppexile data: 09/11/2015 11:31:32
Ragazzi, siete grandi!
Cit. Mauris44: " l'anti sfarfallio (come lo chiami tu) non è stato reimpostato a TRUE "
Effettivamente non so come chiamarlo... le mie lacune sono molteplici! Grazie comunque perchè era una mia svista.
Cit. gdito " il problema sta nel fatto che la macro cerca di lavorare sul foglio ATTIVO in quel momento "
Immaginavo fosse qualcosa del genere, ma non sapevo come risolverlo. Ovviamente dovrò poi modificare tutte le macro in cui richiamo un determinato foglio, giusto?
Per quanto riguarda il file nella complessità, è grazie al vostro forum che sono riuscito a metterlo in piedi... di mio conosco pochissimo o zero di programmazione.
Quindi, ci tengo a ringraziare il forum, i suoi creatori e voi ragazzi che siete sempre pronti ad aiutare chi come me si avvicina a questo mondo meraviglioso che è la programmazione.
Grazie
di gdito data: 09/11/2015 11:35:24
Ciao Beppe,
se vuoi che funzioni sempre correttamente si, devi modificarlo ovunque richiami un Range o uno Sheet.
All'inizio di ogni Sub o Function inserisci
Workbooks(FILE_LAVORO).Activate
di beppexile data: 09/11/2015 11:45:39
Grazie
Vuoi Approfondire?