Istruzioni Select Case



  • Istruzioni Select Case
    di gargiu data: 03/11/2015 16:02:53

    Ciao a tutti,
    spiego il codice riportato sotto:
    Da una ComboBox che ho rinominato "cb_ricercanome", ho applicato all'evento click quello che leggete sotto. Tutto funziona bene e le varie TextBox si popolano in base a ciò che viene prelevato dalle singole colonne associate alla variabile "riga".
    Quando giungo alla sezione "Select Case" le Checkbox associate a questa sezione non reagiscono in base alle istruzioni. Se pur come da istruzione nella cella di riferimento c'é la "X" le Checkbox rimangono disabilitate.

    Sbaglio io nell'utilizzare le istruzioni del Select Case? Sapete aiutarmi?

    Grazie.
     
    Private Sub cb_ricercanome_Click()
    cb_ricercaordine = ""
    Dim riga As String
    Dim testo As String
    Dim Visto As String
    Sheets("storico").Select
    Range("A1").Select
    riga = cb_ricercanome.ListIndex + 2
    Cells(riga, 1).Select
    testo = cb_ricercanome.Text
    If testo <> "" Then
    n_ordine = Worksheets("storico").Range("a" & riga)
    tx_nome = Worksheets("storico").Range("b" & riga)
    tx_cognome = Worksheets("storico").Range("c" & riga)
    tx_via = Worksheets("storico").Range("d" & riga)
    tx_cap = Worksheets("storico").Range("e" & riga)
    tx_citta = Worksheets("storico").Range("f" & riga)
    cb_nazione = Worksheets("storico").Range("g" & riga)
    tx_tel = Worksheets("storico").Range("i" & riga)
    tx_mail1 = Worksheets("storico").Range("j" & riga)
    cb_copie = Worksheets("storico").Range("af" & riga)
    
    Select Case Visto
    Case Worksheets("storico").Range("k" & riga) = "X"
    CheckBox1.Value = True
    Case Worksheets("storico").Range("l" & riga) = "X"
    CheckBox2.Value = True
    Case Worksheets("storico").Range("m" & riga) = "X"
    CheckBox3.Value = True
    Case Worksheets("storico").Range("n" & riga) = "X"
    CheckBox4.Value = True
    Case Worksheets("storico").Range("o" & riga) = "X"
    CheckBox5.Value = True
    Case Worksheets("storico").Range("p" & riga) = "X"
    CheckBox6.Value = True
    Case Worksheets("storico").Range("q" & riga) = "X"
    CheckBox7.Value = True
    Case Worksheets("storico").Range("r" & riga) = "X"
    CheckBox8.Value = True
    Case Worksheets("storico").Range("s" & riga) = "X"
    CheckBox9.Value = True
    Case Worksheets("storico").Range("t" & riga) = "X"
    CheckBox10.Value = True
    Case Worksheets("storico").Range("u" & riga) = "X"
    CheckBox11.Value = True
    Case Worksheets("storico").Range("v" & riga) = "X"
    CheckBox12.Value = True
    Case Worksheets("storico").Range("w" & riga) = "X"
    CheckBox13.Value = True
    Case Worksheets("storico").Range("x" & riga) = "X"
    CheckBox14.Value = True
    Case Worksheets("storico").Range("y" & riga) = "X"
    CheckBox15.Value = True
    Case Worksheets("storico").Range("z" & riga) = "X"
    CheckBox16.Value = True
    Case Worksheets("storico").Range("aa" & riga) = "X"
    CheckBox17.Value = True
    Case Worksheets("storico").Range("ab" & riga) = "X"
    CheckBox18.Value = True
    Case Worksheets("storico").Range("ac" & riga) = "X"
    CheckBox22.Value = True
    Case Worksheets("storico").Range("ae" & riga) = "SI"
    CheckBox19.Value = True
    End Select
    
    End If
    End Sub



  • di Mister_x (utente non iscritto) data: 03/11/2015 18:47:33

    ciao

    e' errato usa re il select case in questo modo
    tu stai processanto la variabile visto la quale non ha nessun valore
    da help di VBA
    ----
    Esempio di istruzione Select Case
    In questo esempio l'istruzione Select Case viene utilizzata per valutare il valore di una variabile. La seconda proposizione Case contiene il valore della variabile in corso di valutazione e quindi viene eseguita solo l'istruzione associata.

    Dim Number
    Number = 8 ' Inizializza la variabile.
    Select Case Number ' Valuta Number.
    Case 1 To 5 ' Number tra 1 e 5, compresi.
    Debug.Print "Tra 1 e 5"
    ' Questa è l'unica proposizione Case la cui valutazione
    ' dà come risultato True.
    Case 6, 7, 8 ' Number tra 6 e 8.
    Debug.Print "Tra 6 e 8"
    Case 9 To 10 ' Number è 9 o 10.
    Debug.Print "Maggiore di 8"
    Case Else ' Altri valori.
    Debug.Print "Non compreso tra 1 e 10"
    End Select
    ------
    come vedi alla variabile number e' stato dato un valore quindi e' come dire se()
    number vale da 1 a 5 fai questo altrimenti
    number vale 6 a 8 fai qiestaltro ecc. ecc.
    case serve per annidare molteplici casi di if o se()

    nel tuo caso non conoscendo la struttura del tuo file , io adotterei il sistema degli if

    ti faccio un esempio dei primi due

    ciao

     
    Private Sub cb_ricercanome_Click()
    cb_ricercaordine = ""
    Dim riga As String
    Dim testo As String
    ''Dim Visto As String
    Sheets("storico").Select
    Range("A1").Select
    riga = cb_ricercanome.ListIndex + 2
    Cells(riga, 1).Select
    testo = cb_ricercanome.Text
    If testo <> "" Then
      n_ordine = Worksheets("storico").Range("a" & riga)
      tx_nome = Worksheets("storico").Range("b" & riga)
      tx_cognome = Worksheets("storico").Range("c" & riga)
      tx_via = Worksheets("storico").Range("d" & riga)
      tx_cap = Worksheets("storico").Range("e" & riga)
      tx_citta = Worksheets("storico").Range("f" & riga)
      cb_nazione = Worksheets("storico").Range("g" & riga)
      tx_tel = Worksheets("storico").Range("i" & riga)
      tx_mail1 = Worksheets("storico").Range("j" & riga)
      cb_copie = Worksheets("storico").Range("af" & riga)
    
      If Worksheets("storico").Range("k" & riga) = "X" Then CheckBox1.Value = True
      If Worksheets("storico").Range("l" & riga) = "X" Then CheckBox2.Value = True
    'ecc. ecc
    End If
    End Sub
    
    






  • di gargiu data: 04/11/2015 08:37:02

    Grazie, ho applicato il tuo usggerimento.