Newsgroup: it.comp.lang.visual-basic
Titolo: Dov'è l'errore?

Scusate sono newbe e non riesco a capire dov'è l'errore, mi dice sempre else 
senza if, ma se lo tolgo mi da un altro errore,
mi rendo conto che è una sciocchezza ma non riesco a venirne fuori, qualcuno 
mi puo' aiutare?
Private Sub CmbAntipasti_Click()
If "1" Then LblAntipasti = "10"
ElseIf "2" Then LblAntipasti = "20"
ElseIf "3" Then LblAntipasti = "30"
End If

"Paola" ha scritto:

Il vecchio ELIF... o ELSEIF... l'ho sempre odiato!!!
Devi andare a capo, dopo il THEN, se vuoi usare questa forma:
 If "1" Then
 LblAntipasti = "10"
 ElseIf "2" Then
 LblAntipasti = "20"
 ElseIf "3" Then
 LblAntipasti = "30"
 End If
La sintassi dell' IF è molto rigorosa:
IF ..valore..  THEN ..istruzione.. (ELSE..istruzione..) END IF
ELSE è facoltativo (infatti l'ho messo tra parentesi).
Ma siccone Visual Basic è molto elastico, se scrivi un'istruzione IF su una 
sola riga puoi anche omettere l'ENDIF finale... ma ti sconsiglio vivamente 
di farlo!!
Per molti buoni motivi:
1) l'ENDIF conclude sempre l'istruzione IF
2) la leggibilità e la pulizia del codice ne guadagna molto
3) se usi IF nidificati, ELSE o ELSEIF, incorri in errori (come esattamente 
quello che hai fatto tu qui sopra)
Sono abbastanza niubbo anche io, qui è pieno di esperti, ma per una cosa 
così semplice penso di riuscire a darti dei consigli:
Usa sempre il rientro, quando scrivi, e prendi l'abitudine di scrivere su 
più righe. Non omettere mai l'ENDIF.
Usando l'indentazione, ti basterà guardare in verticale l'istruzione IF, per 
trovare la corrispondente ENDIF che la conclude.
Esempio:
IF ..(valore).. THEN
    ..(istruzione)..
ELSE
    ..(istruzione)..
ENDIF
Quindi, per IF nidificati:
IF ..(valore).. THEN
    ..(istruzione)..
    IF ..(valore).. THEN
        ..(istruzione)..
    ENDIF
ELSE
    ..(istruzione)..
ENDIF
Oppure, per riproporre la tua forma con l'ELSEIF:
IF ..(valore).. THEN
    ..(istruzione)..
ELSEIF ..(valore).. THEN
        ..(istruzione)..
ELSEIF ..(valore).. THEN
        ..(istruzione)..
ENDIF
Ma nel tuo caso, ci starebbe MOOOLTO meglio una SELECT CASE:
SELECT CASE ..(variabile)..
    CASE "1"
        ..(istruzione)..
    CASE "2"
        ..(istruzione)..
    CASE "3"
        ..(istruzione)..
END SELECT
Ciao
B.

Ti ringrazio molto, sei stato chiarissimo ho provato e non mi da più 
l'errore ma scrive nel label sempre lo stesso valore e cioè il numero 10.. 
che è il primo valore :-(((

 10.. che è il primo valore :-(((
Per forza, tu hai scritto IF "1", e scritto in quel modo, "1" è una 
costante.
Quindi come valore booleano è vero, e quindi viene eseguita sempre 
l'istruzione dopo il primo IF.
:-)
La domanda giusta è: IF "1" cosa?
Se il valore che vuoi testare è contenuto in una variabile, ad esempio 
test$, allora:
IF test$ = "1" THEN
ELSEIF test$ = "2" THEN
ecc...
Comunque ti suggerisco, ancora una volta, di usare l'altra struttura:
SELECT CASE test$


 costante.
Veramente è una stringa...
Comunque, non ha senso scrivere If "1" Then tantomeno If 1 Then...
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
Se un circuito funziona al primo tentativo è perchè il problema è molto
più nascosto e subdolo di quanto tu possa pensare...
E apparirà nel momento in cui farà il massimo danno 

 Comunque, non ha senso scrivere If "1" Then tantomeno If 1 Then...
Sì, è una stringa, ma in quel caso è un IF su un valore costante.
Bye
B. 

 Comunque, non ha senso scrivere If "1" Then tantomeno If 1 Then...
Vallo a spiegare a VB :)
Ciao 

 Vallo a spiegare a VB :)
Anche se è assurdo, è semanticamente corretto.  :-))
Ciao Fabio, colgo l'occasione per salutare anche tutti gli altri, perché 
FINALMENTE... da domani me ne vado un po' in ferie...
Un saluto a tutti,
B.