Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Problema con ciclo vba

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Problema con ciclo vba

Postdi serra » 12/11/18 11:37

Salve, sto cercando di imparare a usare i cicli ma non riesco a capire come impostarlo, provo a mettervi un esempio pratico:
Codice: Seleziona tutto
Sheets("Dati").Activate
For X = 1 To 12
fogliomese = Range("mesiscadenze").Cells(X, 1)
Sheets(fogliomese).Activate
'varie operazioni su ogni foglio
Next X
End Sub


Il problema sorge quando invece che da 1 a 12 elementi ce ne sono tipo 7/8.. purtroppo ogni volta cambiano e non so quanti ce ne saranno, tranne che al massimo sono 12, quindi arrivato all'ultimo elemento per esempio il 7, ovviamente la macro va in errore.
So che devo inserire una cosa del genere
Codice: Seleziona tutto
If fogliomese = "" Then GoTo fine
fine:

in modo che appena x da 1 a 12 diventa un range vuoto si fermi il ciclo e la macro si chiuda senza errori, ma non trovo dove inserire correttamente la stringa nel codice precedente.
Se qualcuno può aiutarmi ne sarei molto grato
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37

Sponsor
 

Re: Problema con ciclo vba

Postdi serra » 12/11/18 12:02

forse ho trovato una soluzione funzionante
Codice: Seleziona tutto
Sheets("Dati").Activate
For X = 1 To 12
fogliomese = Range("mesiscadenze").Cells(X, 1)
If fogliomese = "" Then
Exit For
End If
Sheets(fogliomese).Activate
'operazioni
Next
End Sub


Preferisco comunque una vostra opinione per essere sicuro che sia il modo migliore
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37

Re: Problema con ciclo vba

Postdi wallace&gromit » 12/11/18 12:31

In genere per evitare che il ciclo continui oltre i limiti si imposta il limite massimo, quindi invece di 12 metti una variabile, il cui valore lo ottieni con una ricerca, visto che lavori con le righe, per esempio, definisci UR (ultima riga):
Codice: Seleziona tutto
UR = Cells(1,1).End(xlDown).Row
For X = 1 To UR...


P.S. Ops, forse ho interpretato sbagliato il tuo set di dati: dovrai verificare a quale riga corrisponde Cells(1,1) del tuo range e modificare di conseguenza il valore di UR.
Office2016 + 2019 su win10
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2054
Iscritto il: 16/01/12 14:21

Re: Problema con ciclo vba

Postdi Anthony47 » 12/11/18 15:20

Un'altra alternativa possibile:
Codice: Seleziona tutto
For I = 1 To ActiveWorkbook.Worksheets.Count
    Sheets(I).Select
    '
    'le tue operazionei
    '
Next I


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17656
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema con ciclo vba

Postdi serra » 12/11/18 18:22

Ha vinto soluzione di wallace&gromit, che funziona perfettamente :)
Vorrei porvi un altro quesito senza sporcare il forum:
Codice: Seleziona tutto
Sub SISTEMASI()
Sheets("DDE").Select
Range("H4").Select

With ActiveCell
            .Offset(0, 0).Formula = "=SE(A6<>"""";""SI"";""NO"")"
       End With
End Sub


Non funziona, possibile che non si riesca a impostare questa formula tramite vba? (L'esempio è solo su una cella, ma dopo verrebbe eseguita su molte altre)
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37

Re: Problema con ciclo vba

Postdi Anthony47 » 13/11/18 00:54

Devi studiare la differenza che c'e' tra ".Formula" e ".FormulaLocal".... e optare per la seconda.
Avatar utente
Anthony47
Moderatore
 
Post: 17656
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Problema con ciclo vba":


Chi c’è in linea

Visitano il forum: Paolo67 e 55 ospiti