Macro funziona solo in debug
Hai un problema con Excel? 
Macro funziona solo in debug
di LucaS. (utente non iscritto) data: 07/01/2014 14:20:24
Ciao a tutti
Mi capita un evento strano. Ho una parte di una macro che se eguita in debug funziona mentre se eseguita normalmente fa degli errori.
La parte in questione va a rendere visibile un'immagine invisibile già presente sul foglio e la allinea facendo riferimento all'ultima cella usata.
Come detto, se eseguo l'operazione in debug funziona tutto. Se, invece, lancio la macro con un pulsante allora l'immagine viene portata in corrisponde di un'altra cella; ad esempio invece della cella A48 mi porta l'immagine sulla A625.
A creare problemi sembra essere l'istruzione
numpag1 = Sheets("datasheet").HPageBreaks.Count
che va a contare le interruzioni di pagina. Escludendola funziona tutto
qualcuno ha una spiegazione?
numpag1 = Sheets("foglio2").HPageBreaks.Count
tipoimm = Sheets("foglio3").Cells(i, 2)
Sheets("foglio2").Shapes(tipoimm).Visible = True
Sheets("foglio2").Shapes(tipoimm).Left = Sheets("foglio2").Cells(n + 5, 1).Left
Sheets("foglio2").Shapes(tipoimm).Top = Sheets("foglio2").Cells(n + 5, 1).Top
numpag2 = Sheets("foglio2").HPageBreaks.Count
If numpag1 < numpag2 Then
Sheets("foglio2").HPageBreaks.Add before:=Cells(n, 1)
End If |
di scossa data: 07/01/2014 14:37:20
cit.: "Ho una parte di una macro che se eguita in debug funziona mentre se eseguita normalmente fa degli errori...."
Postare un pezzo di macro non ha alcuna utilità;
Scrivere "fa degli errori" senza specficare gli errori non ha alcuna utilità;
Non allegare un file (magari ridotto/tarocco ma coerente con il reale) smorza in buona percentuale la voglia di aiutare.
di LucaS. (utente non iscritto) data: 07/01/2014 15:51:30
Credevo potesse dipendere solo da quell'istruzione.
L'unico errore che fa è sbagliare a posizionare l'immagine
Ora ho allegato l'intero file.
Cliccando sul pulsante rosso l'immagine dovrebbe posizionarsi sulla cella A65 ma finisce sulla A363.
La parte di codice che ho postato si trova nella sub elabora all'interno del modulo1
di scossa data: 07/01/2014 21:33:27
cit.: ".....Cliccando sul pulsante rosso l'immagine dovrebbe posizionarsi ....."
Quale pulsante rosso? su quale foglio? non vedo pulsanti rossi!
di LucaS. (utente non iscritto) data: 08/01/2014 08:23:23
Sul foglio "input" alla fine della tabella (riga 108) il pulsante "dettaglio scheda tecnica". Premendolo passa al foglio "datasheet" dove, oltre a riportare quanto selezionato dal foglio "input", in corrispondenza della cella A65 (in questo caso) dovrebbe mostrarmi un'immagine che invece viene posizionata sulla cella A363.
Precisazione: mi sono accorto che se utilizzato con excel 2003 sbaglia a posizionare l'immagine, mentre con excel 2010 funziona correttamente. Il file è stato creato con excel 2010 e poi salvato nel formato excel 2003 senza mostrare avvisi di incompatibilità.
di LucaS. (utente non iscritto) data: 08/01/2014 10:34:44
Ho allegato un nuovo file per semplificare le cose dato che ho scoperto che a creare problemi è proprio l'istruzione "HPageBreaks.Count"
Ho fatto alcune prove con la versione 2003 e la 2010 con i rispettivi formati, scambiando i file e convertendo dalla 2010 alla 2003.
Nella versione 2010 tutto bene, l'immagine viene posizionata correttamente. Nella versione 2003 invece l'immagine viene messa su una cella che non c'entra nulla; togliendo quindi l'istruzione "HPageBreaks.Count" tutto funziona. Pensavo a un'incompatibilità tra l'istruzione e la versione di excel però l'istruzione funziona correttamente (conta le interruzioni di pagina orizzontali e mi permette di determinare quante pagine ci sono sul foglio).
Sapete darmi una spiegazione a tutto questo?
Esiste eventualmente un'altra istruzione per contare le pagine che non crei questi problemi?
di scossa data: 08/01/2014 19:43:41
A me il tuo file funziona sia con Excel 2010 che 2003 (W7).
di LucaS. (utente non iscritto) data: 09/01/2014 10:42:26
Si perchè ho sbagliato file.
Ora ho messo il file Corretto.xls
Ricapitolando con la macro sul foglio1 dovrebbe posizionare l'immagine sulla cella (n,1). Sulla versione 2010 funziona tutto. Sulla 2003 funziona solamente togliendo il conteggio delle interruzioni di pagina oppure aggiungendo un'istruzione che attivi il foglio.
Ho già risolto evitando di contare le pagine
Vorrei però capire se è un problema mio, se dipende dalla versione di excel o se c'è qualcos'altro
Vuoi Approfondire?