Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188

    [VB6] Chiarimento del IF...Else

    Salve ragazzi, ho un piccolo problema con if..else.
    In pratica devo "relazionare" due caselle di excel facendo si che se in una sola delle due caselle è presente testo alfanumerico mi dia un messaggio di errore. Quindi ho scirtto il seguente codice:

    codice:
    Sub Rettangolo2_Click()
    If Range("B2") = 0 And Range("A3") <> 0 Then MsgBox "Attenzione data assente"
    ElseIf Range("B2") <> 0 And Range("A3") = 0 Then MsgBox "Per quel giorno, non è presente alcun dato"
    Else: MsgBox "non ci sono errori"
    End If
    End Sub
    Il problema sussiste in quanto azionando la macro mi compare "Errore di compilazione: Else senza If" evidenziandomi "Range" di "Range("A3")" della terza riga del codice. Premettendo che da quello che ho capito l' If...Else viene utilizzato per dare delle condizioni cioè se (If) succede questo fai (then) questo, e se la condzione if è corretta passa alle n condizioni ElseIf proseguendo a cascata. Se nessuna codizione If o n-ElseIf è vera, mi applica la condizione Else. Di conseguenza non riesco proprio a capire perchè mi dia l'errore.
    Altra due cose:
    1 - E' possibile inserire un'altra "specifica" dopo Then nel senso vorrei che oltre al messaggio, mi selezioni anche una casella. Ho provato ad aggiungere un and:
    codice:
     If Range("B2") = 0 And Range("A3") <> 0 Then MsgBox "Attenzione data assente" and Range("B2").Selcetion
    ma da errore a questo punto pensavo ad un GO TO ... .
    2 - E' possibilie ampliare il rage di dove viene applicata la condizione if ad esempio passare da Range("A3") a Range ("A3:U50"). Ho provato ma da lo stesso errore... .

    Spero in chiarimenti
    saluti a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    E' chiaro che cosi non potrai mai complilare.
    La giusta sintassi potrebbe è la seguente:
    [CODE]
    If then
    'Codice
    ElseIf
    'Codice
    Else
    'Codice
    End If
    [CODE]

    Se dopo in Then metti il codice lui chiude l' If...Then
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Quindi:

    codice:
    If Range("B2") = 0 And Range("A3") <> 0 Then
    MsgBox "Attenzione data assente"
    Range("B2").Selcetion
    ElseIf Range("B2") <> 0 And Range("A3") = 0 Then 
    MsgBox "Per quel giorno, non è presente alcun dato"
    Else
    MsgBox "Non ci sono errori"
    End If
    Sbagliare è umano, perseverare è diabolico.

  4. #4
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    Grazie Pirelli ora funge tutto correttamente.
    Per il punto 2 avete suggerimenti?
    "2 - E' possibilie ampliare il rage di dove viene applicata la condizione if ad esempio passare da Range("A3") a Range ("A3:U50"). Ho provato ma da lo stesso errore... ."

  5. #5
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    avevo pensato anche a stabilire un intervallo:
    codice:
    Set Intervallo1 = Range ("A1:C53")
    If Range("B2") = 0 And Intervallo1 <> 0 Then
    MsgBox "Attenzione!!"
    ma anche in questo caso !!Errore!!....

  6. #6
    Originariamente inviato da leomac
    avevo pensato anche a stabilire un intervallo:
    codice:
    Set Intervallo1 = Range ("A1:C53")
    If Range("B2") = 0 And Intervallo1 <> 0 Then
    MsgBox "Attenzione!!"
    ma anche in questo caso !!Errore!!....
    Per forza... Range() restituisce un intervallo di celle, ed ovviamente non puoi confrontare direttamente il contenuto di PIU' celle con un valore numerico, cosi' come non puoi confrontare "di botto" un vettore o una matrice con un singolo valore numerico !

    ...devi fare un ciclo per ogni singolo elemento dell'insieme, o usare una funzione Excel come CONTA.SE o CONTA.VALORI... (leggiti la guida in linea di queste funzioni)

    Ciao !
    IceCube_HT (VB6 fan Club)

  7. #7
    Utente di HTML.it L'avatar di leomac
    Registrato dal
    Mar 2009
    Messaggi
    188
    Yuppie!!
    Tutto apposto, ho risolto:
    codice:
    Sub Macro1()
    conta = Application.WorksheetFunction.CountA(Range("A2:B3"))
    If Range("B2") = 0 And conta > 0 Then
    MsgBox "Attenzione!!"
    avevo provato anche con CountIf ma trovavo problemi se le celle erano occupate da caratteri.
    Grazie a tutti!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.