Eliminare riga listview



  • Eliminare riga listview
    di Claudio (utente non iscritto) data: 04/03/2017 19:51:24

    Ho un problema con il mio progettino. Ho delle listview in un form a cui ho messo un pulsante per eventualmente eliminare un dato. Il problema è che il dato sul foglio me lo elimina ma la listview non si aggiorna.
    Il codice che uso è questo

    Ho messo anche un controllo nel caso in cui si schiacci il tasto senza aver selezionato nulla ma non funziona.
    Grazie
     
    Public Sub Elimina()
        
         Dim nriga As Integer
        nome = ComboBox2 & ComboBox3
        Sheets(nome).Activate
        nriga = ListView1.SelectedItem.Index + 2
         
         If nriga > 0 Then
            Sheets(nome).Rows(nriga).Delete
            ListView1.ListItems.Remove (nriga)
            End If
            
            'If nriga = "" Then
            'MsgBox "Non hai selezionato nulla", 16, vbExclamation, "Errore di compilazione"
            'Exit Sub
            
        'End If
        Application.ScreenUpdating = True
           
    End Sub
    



  • di Edeen (utente non iscritto) data: 04/03/2017 22:02:04

    Se fai +2 a nriga prima di fare la If è ovvio che non funzionerà



  • di Claudio (utente non iscritto) data: 05/03/2017 07:16:44

    Scusa ma non capisco. Se metto:
    nriga = ListView1.SelectedItem.Index + 2
    all'interno della if non mi cancella nulla. D'altronde il +2 mi serve perché nel foglio ho 2 righe di intestazione



  • di patel data: 05/03/2017 08:20:51

    senza file di esempio è difficile dare la soluzione, comunque prova
     
    Public Sub Elimina()
         Dim nriga As Integer
        nome = ComboBox2 & ComboBox3
        Sheets(nome).Activate
        nriga = ListView1.SelectedItem.Index
         If nriga > 0 Then
            Sheets(nome).Rows(nriga+2).Delete
            ListView1.ListItems.Remove (nriga)
         End If
    End Sub






  • di Claudio (utente non iscritto) data: 05/03/2017 08:48:13

    Ho provato così e funziona. Solo che adesso ho un altro problema. Ho diverse listview che caricano i dati da più fogli. Ad listview dovrei associare un pulsante che mi permetta di cancellare la riga selezionata. Avevo pensato ad un ciclo fatto con with listviewn ma non mi funziona. Suggerimenti?

     
    Public Sub Elimina()
    Dim nriga As Integer
    nome = ComboBox2 & ComboBox3
        Sheets(nome).Activate
           nriga = ListView1.SelectedItem.Index + 2
           End If
        If nriga > 0 Then
              Sheets(nome).Rows(nriga).Delete
        ListView1.ListItems.Remove (nriga - 2)
        End If
        Application.ScreenUpdating = True
      End sub



  • di Edeen (utente non iscritto) data: 05/03/2017 09:09:00

    Il codice corretto è quello che ti ha mostrato patel.

    Questo che hai mostrato non ha senso. C'è una End If in mezzo e il + 2 ancora che ti impedisce di rilevare quando non è stato selezionata una riga.
    Il + 2 va solo nella linea che riguarda la cancellazione della riga dal foglio ma non va aggiunto alla variabile nriga.

    Per il resto, non ho capito, forse dovresti aprire un altro thread. Comunque With NON è un ciclo quindi stai facendo confusione.



  • di Claudio (utente non iscritto) data: 05/03/2017 09:33:48

    Ok grazie. Funziona. Per il problema con with aprirò un'altra discussione.
    Grazie ancora