2017-01-10 3 views
0

Ich habe ein Benutzerformular in VBA erstellt, um eine Liste der Elemente von Zeile 1 bis 250 anzuzeigen. Was ich tun möchte, ist die Option zum Löschen einer Zeile mit Klicken Sie auf die Schaltfläche, die dieser Zeile entspricht (und verschieben Sie nach Möglichkeit die restlichen Zeilen um eins). Ist das möglich?Löschen einer Zeile aus angezeigten Daten in Benutzerformular VBA

Private Sub UserForm_Initialize() 

Dim rngData As Range 
Dim lngRow As Long 
Dim lngCol As Long 

Set rngData = Sheets("MAIN").Range("W1:X250") 
With ListBox1 
    .ColumnCount = rngData.Columns.count 

    For lngRow = 1 To rngData.rows.count 
     For lngCol = 1 To rngData.Columns.count 
      If lngCol = 1 Then 
       .AddItem rngData.Cells(lngRow, lngCol).Text 
      Else 
       .List(lngRow - 1, lngCol - 1) = rngData.Cells(lngRow, lngCol).Text 
      End If 
     Next 
    Next 


End With 


End Sub 

Antwort

0

Ja, sagen wir, Sie einen CommandButton hinzufügen und wenn Sie es klicken lesen Sie die ListIndex aus ListBox1 ausgewählte Element (so dass eine Deletion von einer Reihe).

Sub CommandButton1 _CLICK (innerhalb der User_From Code-Modul)

Option Explicit 

Private Sub CommandButton1_Click() 

Dim RowtoDel As Long 

' listindex starts from 0, while your range starts from 1 >> add 1 
RowtoDel = Me.ListBox1.ListIndex + 1 

Sheets("MAIN").Rows(RowtoDel).Delete 

End Sub 
Verwandte Themen