Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[excel] If.. GoTo

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

[excel] If.. GoTo

Postdi ramset64 » 06/01/09 18:33

Anthony scusami ma ho ancora bisogno del tuo aiuto... :oops:

Dunque se ho due possibilità e voglio insirire tutto in una macro scrivo:

Codice
.
.
.
qui ho 2 possibilità che VarX si chiami positiva o negativa, quindi

If varX="positiva" goto Pos
if varX="negativa" goto Neg

Pos:
codice
.
.
.
GoTo generale
Neg:
codice
'
'
'
GoTo generale

quindi dovrebbe esegurmi o il codice pos o il codice neg a seconda dellla variabile varX, quindi riprendere una strada comunqe ad entrambe diciamo generale, quindi:

generale:
codice
.
.
.
end sub

Cosi facendo però solo una delle 2 possibilità funziona correttamente a seconda di come le posiziono, mentre la seconda da sempre "etichetta non definita"!!!!

E' evidente che salto qualche passaggio ma non capisco quale.
Puoi gentilmente illuminarmi?
Grazie
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [excel] If.. GoTo

Postdi Anthony47 » 06/01/09 19:20

Apparentemente il tuo codice dovrebbe funzionare, ma siccome non hai copiato quanto scritto nel vba editor potrebbero esserci errori che la tua trascrizione ha nascosto; fai copia e incolla (e' una cosa che chiedo da sempre).
In linea di massima, il modo con cui articolare il codice dovrebbe essere
Codice: Seleziona tutto
If varX="positiva" then
'codice se positivo
'
Else
'codice se diverso da positivo
'
End if
generale:        'solo come promemoria, non c' e' un GoTo a generale
'codice generale


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] If.. GoTo

Postdi ramset64 » 06/01/09 19:46

No Anthony il mio codice invece non funziona e non si tratta di quanto sta dentro credimi, perchè ho provato ad inserire istruzioni semplicissime. Non ha senso postare la macro in lavorazione.
Quella che hai postato tu ovviamente funziona, ma siccome prevedo l'aggiunta di una terza ipotesi vorrei evitare else... diciamo che non ho capito come si comporta la macro con i GoTo.
Ti dispiace farmi un esempio se le ipotesi sono 3.... più o meno cosi

ParteGenerale1
...
if ipotesiA goto codiceA
if ipotesiB goto codiceB
if ipotesiC goto codiceC

codiceA:
'
goto partegenerale2

codiceB:
'
goto partegenerale2

codiceC:
'
goto partegenerale2



ParteGenerale2:
'
'
end sub

In pratica non ho capito come chiudere i vari codici A-B-C, perchè alcuni funzionano ed altri no, ma dipende solo da dove li posiziono, quindi è chiaro che manca qualche istruzione alla fine di questi codici (credo!).
Grazie
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] If.. GoTo

Postdi Anthony47 » 06/01/09 19:52

In principio, quello che vuoi fare funziona; ti credo che invece quello che hai fatto non funziona.
Ma se non mi scrivi quello che hai fatto e che non ti funziona non so che pensare, nel senso che posso fare 32 ipotesi diverse, ma dove e' sbagliato non lo indovinero' mai.
Ovviamente puoi annidare piu' If /Then /Else (col metodo che ti ho suggerito io), ma certamente e' piu' semplice come stai scrivendo tu (anche se meno efficiente, ma l' efficienza non e' l' obiettivo prioritario da prefiggersi).

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] If.. GoTo

Postdi ramset64 » 06/01/09 21:14

Come era ovvio hai ragione tu.... l'errore sta qua:
Io identifico il tipo di sistema con questa riga:
typesys = Worksheets("Report").Range("TipoSys").Value (che di fatto è una parola non un numero)

Il problema nasce dal fatto che per questo codice negativo non è uguale a Negativo, ovvero distingue le minuscole dalla maiuscole..... evidentemente l'istruzione è sbagliata, presumo nel value finale.

Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] If.. GoTo

Postdi Anthony47 » 07/01/09 01:27

C' e' una relazione tra Typesys e VarX dell' esempio precedente?
Ma tu hai da confrontare un numero o una stringa?
E perche' dici "(che di fatto è una parola non un numero)", quando in effetti noi di "stringhe" parlavamo?

Comunque questo non dovrebbe entrarci nell' errore "Etichetta non definita", che e' un errore di sintassi (un GoTo rimanda a una label che non esiste nel listato).

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] If.. GoTo

Postdi ramset64 » 07/01/09 10:00

Anthony47 ha scritto:C' e' una relazione tra Typesys e VarX dell' esempio precedente?
Ma tu hai da confrontare un numero o una stringa?
E perche' dici "(che di fatto è una parola non un numero)", quando in effetti noi di "stringhe" parlavamo?

Comunque questo non dovrebbe entrarci nell' errore "Etichetta non definita", che e' un errore di sintassi (un GoTo rimanda a una label che non esiste nel listato).

Ciao.

No, nessuna relazione tra Typesys e VarX.
Ho da confrontare una stringa... typesys = Worksheets("Report").Range("TipoSys").Value, in questo range vi è una parola (positiva o negativa) e presumo che range.value non sia il comando giusto o sbaglio? Sostituendo infatti il range da confrontare con dei numeri la macro funziona perfettamente.
Il problema etichetta non definita è risolto.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] If.. GoTo

Postdi Anthony47 » 07/01/09 14:44

Ma a questo punto c' e' ancora un problema? Se SI, quale?

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] If.. GoTo

Postdi ramset64 » 07/01/09 16:36

Il problema è questo:
typesys = Worksheets("Report").Range("TipoSys").Value è corretto considerando che TipoSys è una stringa?
Di fatto mi distingue maiuscole da minuscole mentre io vorrei che considerasse allo stesso modo minuscole e maiuscole.

Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] If.. GoTo

Postdi Anthony47 » 08/01/09 01:34

Typesys e' una variabile in cui metti il contenuto della cella nominata TipoSys; se la cella contiene una stringa, Typesys conterra' una stringa, se TipoSys contenesse un numero la variabile conterrebbe un numero (salvo una eventuale definizione tramite Dim, non solo di nome ma anche di genere; ma in questo caso se il genere di informazione fosse diverso dalla definizione della variabile avresti un errore).

Probabilmente vorresti che Typesys contenga diciamo solo caratteri minuscoli (quindi traducendo Bene in bene); questo lo puoi fare con la funzione LCase:
Codice: Seleziona tutto
typesys = LCASE(Worksheets("Report").Range("TipoSys").Value)

Se non e' quello che chiedevi, allora chi/che cosa dovrebbe considerare allo stesso modo maiuscole e minuscole?

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] If.. GoTo

Postdi ramset64 » 08/01/09 11:33

Si è quello che mi serviva. Non ho modo di provare adesso ma è sicuramente corretto. Intanto mi è saltato fuori un nuovissimo piccolo problema ovvero la possibililtà di inserire un prezzo direttamente dalla macro.
In pratica alla partenza di una macro mi di dovrebbe aprire una finestra che mi chiede di inserire una prezzo.
Grazie
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] If.. GoTo

Postdi Anthony47 » 08/01/09 15:12

Per questo dovrai usare un "inputbox"; es:
Codice: Seleziona tutto
Sheets("Foglio3").Range("I10").Value = InputBox("Input valore", "Titolo a piacere")
(mette in I10 di Foglio3 il valore inputato)

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] If.. GoTo

Postdi ramset64 » 08/01/09 20:57

Perfetto, risolto grazie milleeeeeeeeeeee!
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino


Torna a Applicazioni Office Windows


Topic correlati a "[excel] If.. GoTo":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti