Bloccare listbox automaticamente



  • Bloccare listbox automaticamente
    di AlfredoLino (utente non iscritto) data: 31/01/2017 18:50:21

    Buongiorno a tutti.
    Avrei un problema da risolvere ve lo propongo:
    Uso l'evento Click di una listbox per selezionare una riga, e trasportare i dati di questa riga dentro delle textbox per poterli modificare o eliminare.
    Funziona tutto benissimo, eccezione fatta per una sola cosa,
    se effettuo una selezione (es. la riga 1) trasporto i dati nelle textbox
    se ne effettuo un'altra (es. la riga3) sovrascrivo i dati precedentemente inseriti nelle textbox.
    Vorrei far si che effettuata la prima selezione non si possa piu selezionare alcuna riga nella listbox.

    Uso un pulsante con questo codice e funziona, blocca la selezione nella listbox

    Private Sub CommandButton1_Click()
    ListBox1.Selected(ListBox1.ListIndex) = False
    ListBox1.Locked = True
    End Sub

    Il mio problema è che dovrebbe funzionare in automatico cioè senza il pulsante
    se metto le due istruzioni del pulsante nella routine dove ho scritto '''QUI IL CODICE MANCANTE"
    non funziona!
    Mi potete aiutare, grazie
    Alfredo

     
    Private Sub ListBox1_Click() 'Carico la riga selezionata nelle textbox
    riga = ListBox1.ListIndex 'raccolgo il numero della riga che seleziono
        If riga = "0" Then Exit Sub 'se selez riga 1 esco
    
    
    Sel = MsgBox("Vuoi abilitare le modifiche al Record Selezionato ?", vbYesNo)
        If Sel = vbYes Then
            Frame1.Enabled = False
            Frame2.Enabled = False
            TextBox5 = Cells(riga + 1, 1)
            TextBox6 = Cells(riga + 1, 2)
            TextBox7 = Cells(riga + 1, 3)
            TextBox8 = Cells(riga + 1, 4)
            TextBox9 = Cells(riga + 1, 5)
            TextBox10 = riga
            ModRecord.Locked = False
            ElimRecord.Locked = False
            Aggiungi.Locked = True
            TextBox9.SetFocus
    '''QUI IL CODICE MANCANTE"
        Else
    
        End If
    
    End Sub
    



  • di mabolsie data: 31/01/2017 20:08:31

    ciao Alfredo dovresti inserire il file completo per verificarne il funzionamento.

    Ciao Max



  • di AlfredoLino (utente non iscritto) data: 01/02/2017 12:21:02

    Ho allegato un file di esempio... scusa se è un po pasticciato e se alcune funzioni non vanno, è in lavorazione.

    Cmq. a questo file prova manca l'istruzione con la quale provo a disabilitare la listbox (ListBox1.Selected(ListBox1.ListIndex) = False
    ListBox1.Locked = True) . Si puo notare che, dopo aver scelto la riga 1 e confermato dando ok alla combobox che compare appena si clicca,
    se si seleziona un altra riga ripete il ciclo. Esce di nuovo la combobox e chiede conferma.
    Vorrei far si che avendo selezionato una riga dalla listbox, non sia possibile selezionarne un altra se prima non è stata eliminata
    o aggiornata la riga gia selezionata.

    Grazie Max x l'interesse



  • di AlfredoLino (utente non iscritto) data: 02/02/2017 19:14:35

    Ho provato e riprovato... mi sa che non è possibile farlo! Di certo non con le mie modeste capacità!



  • di mabolsie data: 02/02/2017 23:31:36

    Ciao Alfredolino prova questo codice, in pratica ti controlla la textbox5 se non è vuota blocca la scelta della listbox1.

    Ciao Max
     
    Private Sub ListBox1_Click() 'Carico la riga selezionata
    riga = ListBox1.ListIndex
    If riga = "0" Then Exit Sub
    '*********************************************************
    If TextBox5.Value <> "" Then
    ListBox1.Enabled = False
    Exit Sub
    End If
    '*********************************************************
    Sel = MsgBox("Vuoi abilitare le modifiche al Record Selezionato ?", vbYesNo)
    If Sel = vbYes Then
    Frame1.Enabled = False
    Frame2.Enabled = False
    TextBox5 = Cells(riga + 1, 1)
    TextBox6 = Cells(riga + 1, 2)
    TextBox7 = Cells(riga + 1, 3)
    TextBox8 = Cells(riga + 1, 4)
    TextBox9 = Cells(riga + 1, 5)
    TextBox10 = riga
    ModRecord.Locked = False
    ElimRecord.Locked = False
    Aggiungi.Locked = True
    TextBox9.SetFocus
    End If
    
    End Sub



  • di AlfredoLino (utente non iscritto) data: 03/02/2017 11:34:48

    Oggi mi sono sentito un poco "VbaStupido" anche essendo consapevole di non saperne molto di Vba!

    La soluzione era banale, ma mi ero fissato con il voler bloccare la listbox!
    Grazie Max mi hai aperto la mente li dove si era bloccato il mio pensiero!

    In effetti mi è bastato aggiungere il controllo sulla textbox5 con If ed exit sub
    se trovi la text box compilata (quindi gia ho selezionato un record) esci dalla sub,
    senza fare azioni sulla listbox ottengo il risultato "ambito"

    Grazie ancora
     
    If TextBox5.Value <> "" Then
    Exit Sub
    End If
    



  • di mabolsie data: 03/02/2017 12:39:04

    Bene !!!


    Ciao Max