Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Zeilen bedingt durch SpinButton verschieben

Gruppe

SpinButton

Problem

Wie kann ich durch Betätigung eines SpinButtons einer UserForm Zeilen in einem Tabellenblatt nach unten oder oben verschieben?

Lösung
Geben Sie den nachfolgenden Code in das Klassenmodul der UserForm ein.

ClassModule: frmMoveRows

Private Sub cmdContinue_Click()
   Unload Me
End Sub

Private Sub SpinButton1_SpinUp()
   Dim sTxt As String
   With lstValues
      If .ListIndex = 0 Then Exit Sub
      sTxt = .List(.ListIndex)
      .List(.ListIndex) = .List(.ListIndex - 1)
      .List(.ListIndex - 1) = sTxt
      .ListIndex = .ListIndex - 1
      Rows(.ListIndex + 1).Insert
      Rows(.ListIndex + 3).Copy Rows(.ListIndex + 1)
      Rows(.ListIndex + 3).Delete
   End With
End Sub

Private Sub SpinButton1_SpinDown()
   Dim sTxt As String
   With lstValues
      If .ListIndex = .ListCount - 1 Then Exit Sub
      sTxt = .List(.ListIndex)
      .List(.ListIndex) = .List(.ListIndex + 1)
      .List(.ListIndex + 1) = sTxt
      .ListIndex = .ListIndex + 1
      Rows(.ListIndex + 2).Insert
      Rows(.ListIndex).Copy Rows(.ListIndex + 2)
      Rows(.ListIndex).Delete
   End With
End Sub

Private Sub UserForm_Initialize()
   Dim iRow As Integer
   iRow = 1
   Do Until IsEmpty(Worksheets("Daten").Cells(iRow, 1))
      lstValues.AddItem Cells(iRow, 1)
      iRow = iRow + 1
   Loop
   lstValues.ListIndex = SpinButton1.Value - 1
End Sub

StandardModule: basMain

Sub CallForm()
   frmMoveRows.Show
End Sub