Condividi:        

come far funzionare exit for in macro

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

come far funzionare exit for in macro

Postdi giorgioa » 03/07/16 18:20

Salve a tutti,

date le mie conoscenze limitate in materia non riesco ad andare oltre
a completare questa macro.
UN GRANDE AIUTO

Sub Trova()
Dim e As Currency, f As Currency, g As Currency
e = [E1]
f = [F1]
g = [G1]
For g = 1 To 90
For f = 1 To 90
For e = 1 To 90
If Cells(1, 5).Value = Cells(1, 5).Value Then Cells(1, 5).Value = Cells(1, 5).Value + 1
If Cells(1, 5).Value > 90 Then Cells(1, 5).Value = 1
If Cells(3, 9).Value = Cells(4, 3).Value Then Exit For
Application.CutCopyMode = False
If Cells(1, 5).Value > 90 Then Cells(1, 6).Select

Next e
If Cells(1, 6).Value = Cells(1, 6).Value Then Cells(1, 6).Value = Cells(1, 6).Value + 1
If Cells(1, 6).Value > 90 Then Cells(1, 6).Value = 1
If Cells(3, 9).Value = Cells(4, 3).Value Then Exit For
Application.CutCopyMode = False
If Cells(1, 6).Value > 90 Then Cells(1, 7).Select

Next f
If Cells(1, 7).Value = Cells(1, 7).Value Then Cells(1, 7).Value = Cells(1, 7).Value + 1
If Cells(1, 7).Value > 90 Then Cells(1, 7).Value = 1
If Cells(3, 9).Value = Cells(4, 3).Value Then Exit For
Application.CutCopyMode = False
If Cells(1, 7).Value > 90 Then Exit Sub
' Next e
'Next f
Next g

End Sub
Quello che vorrei è che quando i 3 for hanno contemporaneamente che I3 = C4 si deve fermare
la macro e poi ricliccando la macro cerca altri dati fino a che sia g1, sia f1 che e1 completano i
cicli a 90.
Salve
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Sponsor
 

Re: come far funzionare exit for in macro

Postdi Flash30005 » 04/07/16 03:02

Forse è opportuno che fornissi i dati dai quali parti (input)
specifichi le condizioni
per ottenere i dati finali (output)

cercare di capire una macro che non funziona senza sapere cosa deve funzionare diviene sempre un problema

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 06:24

Salve,

una correzione da parte mia è che currency non riguarda
moneta ma è numerico riguarda il dato nelle tre celle e1-f1-g1
che forse dovrebbe essere irrilevante.

Non che non voglio ma postare il file mi è difficile e per
la sua grandezza di dati e che mi è difficle ridurre i dati
riportati.
Quindi se mi potete aiutare con quanto riportato nella macro.

cosa fa la macro?
in e1 vengono riportati dei numeri da 1 a 90 tipo contatore
1 poi2 ecc fino a 90;
quando il numero di e1 arriva a 90 ricomincia la conta
e incrementa di una unita f1 fino a quando f1 arriva a 90
che a sua volta incrementa g1.

I3 tiene conto di una somma che se le 3 celle sommate
saranno uguale a c4 la macro si deve fermare ma NON
uscire da essa poi cliccare per continuare a trovare
l'altra somma che è fissa in c4.

So che ci saranno altri interventi per chiarimenti ma
vediamo se ho spiegato qualcosa di comprensibile.

Salve
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 07:06

Salve,

riporto 2 esempi per chiarimento.

se E1=15; F1=70; G1=5 la cella I3 fa la somma e in questo caso
la somma è 90 poichè C4 ha il valore 90 la macro si deve fermare;

altro esempio,
E1=30; F1=31; G1=29 totale 90.
C4=90; C4 chiede che se la somma in E3 è = a C4 la macro si deve fermare.

Se si può inserire nella macro che i valori di E1, F1, G1 nel momento in cui
fanno somma uguale a I3 e quindi = C4 i numeri fra essi devono essere tutti differenti

Per esempio E1=30; F1=30; G1=30 è vero che i numeri nelle celle sommati
fa 90 ma non li deve accettare come pure se delle 3 due di esse(celle) sono uguali,

per esempio E1=35; F1=20; G1=35
Quindi la macro non si deve fermare quando ci sono 2 oppure 3 numeri uguali.

La macro si deve fermare quando G1 è = 90, quando F1 =90 e E1 =90.

Credo che questo chiarisca cosa vorrei dalla macro.

Saluti
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi Flash30005 » 04/07/16 07:27

Non so se per fermare intendi uscire dalla macro e poi riprendere da "quel punto" ovvero da quelle condizioni e continuare la sequenza numerica ciclica
se è così e la tua macro fa tutto il resto del "lavoro"
(perché secondo me sono inverti i cicli)
quindi se la tua macro funziona ma devi fare solo lo stop
devi solo modificare la prima parte della macro

Codice: Seleziona tutto
Ei = [E1]
Fi = [F1]
Gi = [G1]
For g = Gi To 90
 For f = Fi To 90
 For e = Ei To 90


se invece non funziona, come penso perché si avvia prima G1 e non E1
allora far fare il ciclo For next di For e
prima degli altri due
poi c'è For f
e infine (all'interno dei due) il ciclo For g
così per capirci

Codice: Seleziona tutto
For e = Ei To 90
For f = Fi To 90
For g = Gi To 90

e chiaramente anche i rispettivi next vanno spostati
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 07:47

Salve Flash,

così com'è la macro inizia da E1 a 90 incrementa F1 di uno,
dopo i che E1 ha incrementato F1 a 90,
F1 inizia a incrementare G1 e quindi ricomincia
daccapo.
Quindi la macro fa questo, il probllema sta che
quando I3 fa la somma delle 3 celle il cui risultato
è uguale a C4 non si ferma.

Cioè, per spiegarmi, non rispetta Exit for, non si ferma.

Ho cambiato le posizioni dei for cioè
il gruppo di righe che riguarda il For ma niente
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi scossa » 04/07/16 10:57

Ciao,

scusa ma il tuo codice è, come dire..... bizzarro:
[quote="giorgioa"]
Codice: Seleziona tutto
g = [G1]
For g = 1 To 90

prima assegni a g il valore della cella G1 e subito dopo lo utilizzi come indice di un ciclo for...next (perdendo il valore precednetemente assegnato .....)

Poi
Codice: Seleziona tutto
        If Cells(1, 5).Value = Cells(1, 5).Value

confronti un valore con se stesso, secondo te quel confronto potrà mai dare un risultato diverso da VERO?

Comincia con l'esaminare il problema dal punto di vista logico e poi ti preoccuperai di come scrivere il codice.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 11:08

Salve

allego il file così ed effettivamente vedete dove stanno gli errori

http://www.filedropper.com/cerca

A me interessa che la macro si fermi quando I3 ha la stessa somma di C4
però poi deve continuare a cercare clikkando sul tasto.
Detto brevemente uno stop con exit for

La mia macro la potete anche capovolgere, a me interessa quanto detto
sopra mentre deve uscire per ipotesi non trova la somma di c4 quando
Gi poi F1 ed E1 sono a 90-90-90

ciao
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 14:59

Salve,

ho apportato dei cambiamenti alla macro
ma c'è un difetto che si ferma a un numero in più.

cioè se in C4 scrivo 90 e si ferma a 91 come in I3.

Da cosa dipende?

http://www.filedropper.com/cerca_1
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi Flash30005 » 04/07/16 21:53

Non ho forse capito il quesito
comunque
prova questa macro
Codice: Seleziona tutto
Option Explicit

Sub Trova()
Dim e As Integer, f As Integer, g As Integer, EI As Integer, FI As Integer, GI As Integer

EI = [E1]
FI = [F1]
GI = [G1]
For e = EI To 90
    [E1] = e
    For f = FI To 90
        [F1] = f
        For g = GI To 90
            [G1] = g
            If e + f + g = [C4] Then
                Exit Sub
            End If
        Next g
    Next f
Next e
End Sub


La macro si ferma quando la somma di E1+F1+G1 = C4
ma in I3 devi togliere il -1 nella formula altrimenti avrai 99 quando è 100

Oppure con E1 che inizia con il massimo valore (90)
usa questa
Codice: Seleziona tutto
Sub TrovaRov()
Dim e As Integer, f As Integer, g As Integer, EI As Integer, FI As Integer, GI As Integer

EI = [E1]
FI = [F1]
GI = [G1]
For e = EI To 1 Step -1
    [E1] = e
    For f = FI To 1 Step -1
        [F1] = f
        For g = GI To 1 Step -1
            [G1] = g
            If e + f + g = [C4] Then
                Exit Sub
            End If
        Next g
    Next f
Next e
End Sub


ciao

EDIT ore 23:30 by Flash - Corretta macro TrovaRov
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 22:32

Salve


sto provando la macro e i cicli li fa solo che
quando fa il risultato di i3 che è uguale a c4
la macro deve fermarsi e non uscire completamente da essa stessa
per spiegarmi tipo exit for
perchè poi deve continuare la ricerca da dove si è fermata
fino a quando, qualora non trova il dato che = ad i3,
alla fine dei 3 cicli se puoi inserire una input box che mi avvisa
che il calcolo è finito.
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi Flash30005 » 04/07/16 22:36

Le macro sono due
la seconda l'ho modificata poco fa

Io non prendo affatto in considerazione cosa contiene la cella I3

quindi devi dirmi quale delle due macro stai utilizzando e poi
spiegare cosa non funziona perché anche se esce definitivamente dalla routine
quando la riavvierai partirà dall'ultima combinazione trovata

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 22:38

ciao

non avevo letto che in i3 si il - 1 va tolto.

Appena ho visto la macro non ho tenuto conto di altro
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 22:48

ho usato entrambe le macro.

volevo chiedere se non prendi in considerazione il dato di
i3 la macro quando si ferma?
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 23:05

Ciao Flash,

non ti faccio lavorare nel buio.

questo il file ed ho collegato ai 2 tasti le 2 macro.

http://www.filedropper.com/indicisommativirecuperato1

Devi tenere conto di i3 perchè i3 mi conterebbe le vincite
avvenute in quella colonna (i3).
C4 a sua volta mi conta quante estrazioni sono state
riportate.
In questo caso c4 = 6 e voglio sapere se i3 ha fatto 6.
Se i 3 ha fatto 6 si ferma la macro devo trascrivere i dati di
e-f-g e poi continuare fino alla fine dei 3 cicli.
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 04/07/16 23:31

eventualmente ti può servire,
quando avvii una delle 2 macro in i3 se trova
il numero 6 la cella si colora di rosso però siccome
il conteggio continua si nota un attimo la collorazione.

Nel provare le macro se per esempio
nelle 3 celle 1 escono 3 due le macro
non ripartono, sembano inchiodate.
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 05/07/16 00:15

Salve,

in verità la macro trova il ciclo della cella f
pare non lo fa completo.
cioè se e èè stato incrementato di 1 f
deve cominciare sempre il ciclo da 1 a 90
mentre la macro trova rov pare faccia l'inverso.

Cioè all'incremento di e f conta a scendere se
si trova a 60 fa 59, 58 fino a 1.

ciao
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 05/07/16 06:24

Salve Flash,

i riporto il file con dati più ristretti in modo tale
che possa renderti conto meglio di ciò che vorrei.
Sulla DX del foglio ci sono i tasti delle mie macro
che fanno qualcosa ma non esattamente questo
ai fini di fermarsi quando trova i dati ma alcune
volte si ferma altre prosegue nella ricerca.
Quanndo, avviando la mia macro vedi che i3 si
tinge di rosso dovrebbermarsi ma lo fa alcune volte
e molte no.
Le tue macro sono quelle di SX.

Per avere con un dato la panoramica di quanto voglio
più che altro dimostrativa, in
e1 scrivi 85, in f1 39 in g1 87 mentre la lettera = E.
Questo manualmente che a volte si ferma con questo
dato e altre volte no.
Poi con l'aver eliminato dei dati qualche formula ha perso il
collegamento e si è resa inutilizzabile.
Cmq versione è quella corretta.
Ciao

http://www.filedropper.com/indicisommativirecuperato1_1
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi giorgioa » 05/07/16 17:14

Salve,

se quallcuno mi può dare delle spiegazioni.
apro il file e nelle celle e1-f1-g1 scrivo 3 1
al fare di lanciare la macro dmtrl la macro semba non uscire fuori da
quel calcolo e questo ci si accorge clikkando e ricliccando più volte.
Cosa c'è da fare per correggere questa situazione?

ma anche quando riporto 2-2-2-o 1-2-1.

Grazie
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: come far funzionare exit for in macro

Postdi Anthony47 » 06/07/16 01:31

se qualcuno mi può dare delle spiegazioni

Da una veloce lettura della discussione mi pare che non sia mai stato detto che cosa si vuole che la macro faccia.
In questa situazione credo che nemmeno i piu' volonterosi possano essere in grado di dire qualcosa, anche solo per eliminare qualche probabile ridondanza nel codice.

Inoltre, a spanne, qualla macro potrebbe durare tra 40 e 70 secondi; spero tu ne tenga conto quando parli di "clikkando e ricliccando più volte".

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "come far funzionare exit for in macro":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti