Aggiornare listbox



  • Aggiornare listbox
    di Elios (utente non iscritto) data: 29/12/2013 16:47:06

    Ciao a tutti,
    volevo avere un aiutino per quanto riguarda una listbox che ho inserito in un form. Dopo aver cancellato un elemento della lista come faccio ad averla aggiornata senza dover uscire dal form?
    Grazie a tutti



  • di patel data: 29/12/2013 16:57:09

    allega un file di esempio





  • di patel data: 29/12/2013 18:47:21

    prova questo codice adeguandolo al tuo caso
     
    Private Sub CommandButton2_Click()
        With Me.ListBox1
            If .ListCount > 0 Then
                .RemoveItem (.ListIndex)
            End If
        End With
    End Sub
    






  • di Elios (utente non iscritto) data: 30/12/2013 13:26:54

    Ecco, scusa ma non sono stato al pc. Intanto grazie per la risposta. Ti allego parte del codice che penso sia quello che possa interessare al quesito. Anche perche non capisco come adattarlo al mio.
    Ciao
     
    Private Sub ListBox1_Click()
    
     posiz = (ListBox1.ListIndex + 1) * 4 - 3
     If ListBox1.ListCount >= 1 Then ListBox2.Clear
     i = 3
     Do Until Sheets("Pubblicazioni").Cells(i, posiz) = Empty
     NewPubbliForm.ListBox2.AddItem (Sheets("Pubblicazioni").Cells(i, posiz + 1).Value)
     i = i + 1
     Loop
    Cancella
    End Sub
    
    Private Sub ListBox2_Click()
    
    p = ListBox2.ListIndex + 3
     Cancella
     TextBox1.Text = Sheets("Pubblicazioni").Cells(p, posiz + 1)
     TextBox2.Text = Sheets("Pubblicazioni").Cells(p, posiz)
     TextBox3.Text = Sheets("Pubblicazioni").Cells(p, posiz + 2)
     TextBox4.SetFocus
    
    End Sub
    Private Sub Cancella()
     TextBox1.Text = "": TextBox2.Text = "": TextBox3.Text = ""
     End Sub
    



  • di Elios (utente non iscritto) data: 30/12/2013 14:04:19

    Ciao Patel,
    ho provato il tuo codice e funziona qnd elimino un elemento dalla lista. Ma qnd ne aggiungo uno non la aggiorna e va in errore.
    Non so il motivo, Ti allego il codice.
    A presto
     
    Private Sub CommandButton1_Click()
    'INSERISCI: Form Nuove pubblicazioni
    
    If NewPubbliForm.TextBox5 = "" Then: _
     MsgBox "Inserire Titolo", vbExclamation: TextBox5.SetFocus
     i = 3
    Do Until Sheets("Pubblicazioni").Cells(i, posiz) = Empty
     i = i + 1
    Loop
     With Sheets("Pubblicazioni")
     .Cells(i, posiz).Value = TextBox4.Text       'cod articolo
     .Cells(i, posiz + 1).Value = TextBox5.Text   'Titolo
     .Cells(i, posiz + 2).Value = TextBox6.Text   'sigla
     End With
     
     'Aggiorna_Lista
     
     With Sheets("Foglio1")
     ri = 2
     co = 2
        Do Until Sheets("Foglio1").Cells(ri, co) = Empty
        ri = ri + 1
        Loop
        .Cells(ri, co + 1).Value = TextBox4.Text    'cod articolo
        .Cells(ri, co + 5).Value = TextBox4.Text    'cod articolo
        .Cells(ri, co).Value = TextBox5.Text        'Titolo
        .Cells(ri, co + 6).Value = TextBox5.Text    'Titolo
        .Cells(ri, co + 2).Value = TextBox6.Text    'sigla
        .Cells(ri, co + 7).Value = TextBox6.Text    'sigla
     End With
     
     Ordina_Foglio1
    
     
    End Sub
    
    
    
    Private Sub CommandButton3_Click()
    ' ELIMINA PUBBL
    
    Dim c As Object
    
     Mt = Mt & "La pubblicazione selezionata sarà eliminata." & Chr(13) & Chr(13)
     Mt = Mt & "Vuoi Continuare??" & Chr(13) & Chr(13)
     rs = MsgBox(prompt:=Mt, Title:="Elimina", Buttons:=vbYesNo + vbQuestion)
     If rs = vbNo Then Exit Sub
    
    p = ListBox2.ListIndex + 3
    pp = TextBox1.Value
    
    Sheets("Pubblicazioni").Cells(p, posiz + 1).Value = ""
    Sheets("Pubblicazioni").Cells(p, posiz).Value = ""
    Sheets("Pubblicazioni").Cells(p, posiz + 2).Value = ""
    
     With Sheets("Pubblicazioni")
    Set c = Range(.Cells(p, posiz), .Cells(p, posiz + 2))
    c.Delete Shift:=xlUp
     End With
     
     With Sheets("Foglio1")
     ri = 2
     co = 2
        Do Until Sheets("Foglio1").Cells(ri, co).Value = pp
        ri = ri + 1
        Loop
            .Cells(ri, co + 1).Value = ""   'cod articolo
            .Cells(ri, co).Value = ""       'Titolo
            .Cells(ri, co + 2).Value = ""   'sigla
    End With
    
    With Sheets("Foglio1")
     ri = 2
     co = 8
        Do Until Sheets("Foglio1").Cells(ri, co).Value = pp
        ri = ri + 1
        Loop
            .Cells(ri, co - 1).Value = ""   'cod articolo
            .Cells(ri, co).Value = ""     'Titolo
            .Cells(ri, co + 1).Value = ""    'sigla
    End With
     
     Ordina_Foglio1
    Aggiorna_Lista 'QUESTO E' IL TUO CODICE
     
    End Sub



  • di patel data: 30/12/2013 19:12:29

    come faccio a provare il tuo codice senza il file ?





  • di Elios (utente non iscritto) data: 30/12/2013 21:42:03

    Ho messo il file spero sia più chiaro adesso



  • di patel data: 31/12/2013 07:42:06

    Quando aggiungi un nuovo elemento aggiorni i fogli ma non la listbox, quindi hai 2 strade
    1) aggiungi i nuovi dati alla listbox
    2) aggiorni la listbox facendole rileggere tutto daccapo





  • di patel data: 31/12/2013 08:03:10

    attenzione, il mio codice non aggiorna la lista, si limita soltanto ad eliminare la riga selezionata.





  • di patel data: 31/12/2013 08:46:09

    in pratica basta modificare il codice così
     
    Private Sub CommandButton1_Click()
    'INSERISCI: Form Nuove pubblicazioni
    
    If NewPubbliForm.TextBox5 = "" Then: _
     MsgBox "Inserire Titolo", vbExclamation: TextBox5.SetFocus
     i = 3
    Do Until Sheets("Pubblicazioni").Cells(i, posiz) = Empty
     i = i + 1
    Loop
     With Sheets("Pubblicazioni")
     .Cells(i, posiz).Value = TextBox4.Text       'cod articolo
     .Cells(i, posiz + 1).Value = TextBox5.Text   'Titolo
     .Cells(i, posiz + 2).Value = TextBox6.Text   'sigla
     End With
     
     'Aggiorna_Lista
     
     With Sheets("Foglio1")
     ri = 2
     co = 2
        Do Until Sheets("Foglio1").Cells(ri, co) = Empty
        ri = ri + 1
        Loop
        .Cells(ri, co + 1).Value = TextBox4.Text    'cod articolo
        .Cells(ri, co + 5).Value = TextBox4.Text    'cod articolo
        .Cells(ri, co).Value = TextBox5.Text        'Titolo
        .Cells(ri, co + 6).Value = TextBox5.Text    'Titolo
        .Cells(ri, co + 2).Value = TextBox6.Text    'sigla
        .Cells(ri, co + 7).Value = TextBox6.Text    'sigla
     End With
     
     Ordina_Foglio1
     NewPubbliForm.ListBox2.AddItem TextBox5.Text






  • di Grograman (utente non iscritto) data: 31/12/2013 09:23:38

    Io (che non amo i loop) modificherei anche la routine di click della listbox 1 come segue:
     
    Private Sub ListBox1_Click()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Pubblicazioni")
     posiz = (ListBox1.ListIndex + 1) * 4 - 3
     If ListBox1.ListCount >= 1 Then ListBox2.RowSource = ""
     With ws
      i = .Cells(.Rows.Count, posiz + 1).End(xlUp).Row
      NewPubbliForm.ListBox2.RowSource = ws.Name & "!" & .Range(.Cells(3, posiz + 1), .Cells(i, posiz + 1)).Address
     End With
    Set ws = Nothing
    End Sub



  • di Elios (utente non iscritto) data: 31/12/2013 09:54:56

    Grazie mille,
    ora provo e ti faccio sapere.
    Cmq grazie alla vs esperienza ho la possibilità di fare dei progressi.



  • di Elios (utente non iscritto) data: 13/01/2014 22:13:25

    Ciao a tutti
    ho fatto alcune modifiche in base ai vostri consigli. Non riesco però quando elimino un articolo a cancellarlo da foglio ELENCO. Potete aiutarmi?



  • di patel data: 14/01/2014 08:38:52

    non capisco come fai a scegliere l'articolo da eliminare





  • di Elios (utente non iscritto) data: 16/01/2014 16:30:07

    Ciao
    lo scelgo dal form cliccando prima sulla categoria e poi sull'articolo, che verrà visualizzato nelle textbox, quindi clicco su Elimina



  • di patel data: 16/01/2014 17:57:53

    mi sembra organizzato male, inserisci lo stesso dato 2 volte, una in elenco ed una in pubblicazioni ?





  • di Elios (utente non iscritto) data: 16/01/2014 22:41:51

    Ti spiego il perchè del doppio inserimento. In pubblicazioni perchè da li si popola la listbox delle categorie; in Elenco perchè questo è un foglio di carico e scarico del magazzino per tutto l'anno. Da qui la necessità di inserire una nuova eventuale pubblicazione in Elenco così da poter da un dato mese i n poi inserire i dati.



  • di patel data: 17/01/2014 07:57:45

    non è cosi che si deve fare, devi trovare il modo di inserire i dati una volta sola e poi compilare l'elenco in automatico.