ricky53 ha scritto:Ciao,
non conoscendo il tuo obiettivo è difficile poterti aiutare.
Se vuoi fare delle prove su come "funziona" il
"Do While ... / Loop"
oppure
"Do / Loop Until ..."
allora prova questi che ti ho scritto
- Codice: Seleziona tutto
Sub Esempio_Ciclo_1()
Dim I As Integer, mVar As String
mVar = "SI"
I = 1
Do While mVar = "SI"
Range("A1") = I
I = I + 1
If I > 200 Then
MsgBox "Il ciclo è terminato"
mVar = "NO"
End If
Loop
End Sub
Sub Esempio_Ciclo_2()
Dim I As Integer, mVar As String
mVar = "SI"
I = 1
Do
Range("A1") = I
I = I + 1
If I > 200 Then
MsgBox "Il ciclo 2 si è concluso"
mVar = "NO"
End If
Loop Until mVar <> "SI"
End Sub
Comunque anche nella in rete troverai degli esempi validi.
Se vuoi controllare che in una cella vi sia una data allora NON occorre il "CICLO" ma in semplice "If" tipo il seguente
- Codice: Seleziona tutto
Sub controlla()
If IsDate(Range("A1").Value) Then
MsgBox ("ok")
Else
Range("A1").Select
MsgBox ("Non è una data riprova")
End If
End Sub
Prova e fatti senitre
Effettivamente con il secondo codice che hai postato usando l'istruzione IF è meglio, più pratico e sintetico,io purtroppo tendo sempre ad incasinare tutto
Mentre per il primo codice ti metto quello che ho capito.... se ho capito
,mi potresti cortesemente confermarmi se il ragionamento seguente che faccio è giusto o se c'è qualcosa da correggere o aggiungere.
Dunque il ciclo dovrebbe continuare fino a quando l'istruzione nella riga Do While non risulta vera, e posso fare partire il ciclo anche da un punto più alto modificando il valore numerico della variabile (I).
1) la cella dove scorre il ciclo è la A1 del foglio di calcolo
2) Da subito la variabile mVar contiene "SI"
3) la variabile (I) vale 1 e successivamente si incrementa in continuazione di un' unità
4) Fino al momento in cui (I) non supera 500 per cui l'istruzione If mi manda alla msgbox che mi indica che "il ciclo è terminato"
5) E poi mi cambia la variabile mVar in "NO"
6) finisce la IF
7) parte il Loop che mi spedisce alla riga Do While mVar = "SI", però questa volta mVar non coincide per cui segue End Sub
grazie mille x eventuale risposta