HERBERS Excel-Forum - die Dialoge

Thema: Zeilen verschieben

Home
Zeilen sollen anhand eines UserForm-SpinButtons verschoben werden. Zeilen verschieben
  • Prozedur: UserForm_Initialize
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: Werte in ListBox einlesen
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Zeilenzähler initialisieren
    • Schleife bis zur ersten leeren Zelle in Spalte A
    • Zellwert in ListBox eintragen
    • Zeilenzähler um eins hochzählen
    • Erstes Element der ListBox auswählen
  • Code:

    
    Private Sub UserForm_Initialize()
       Dim iRow As Integer
       iRow = 1
       Do Until IsEmpty(Worksheets("Daten").Cells(iRow, 1))
          lstValues.AddItem Cells(iRow, 1).Value
          iRow = iRow + 1
       Loop
       lstValues.ListIndex = SpinButton1.Value - 1
    End Sub
    
  • Prozedur: SpinButton1_SpinDown
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: Zeilen nach unten verschieben
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Rahmen um das ListBox-Objekt bilden
    • Wenn das aktuelle Element an letzten Position steht, Prozedur verlassen
    • Aktives Element in String-Variable einlesen
    • Aktives Element mit dem Nachfolge-Element überschreiben
    • Nachfolge-Element mit der Stirng-Variablen überschreiben
    • Markierung in der ListBox um eins nach unten verschieben
    • Zeile in Tabellenblatt einfügen
    • Zeile kopieren und einfügen
    • Leere Zeile löschen
  • Code:

    
    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
    
  • Prozedur: SpinButton1_SpinUp
  • Art: Ereignis
  • Modul: Klassenmodul der UserForm
  • Zweck: Zeilen nach oben verschieben
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Rahmen um das ListBox-Objekt bilden
    • Wenn das aktuelle Element an erster Position steht, Prozedur verlassen
    • Aktives Element in String-Variable einlesen
    • Aktives Element mit dem Nachfolge-Element überschreiben
    • Nachfolge-Element mit der Stirng-Variablen überschreiben
    • Markierung in der ListBox um eins nach unten verschieben
    • Zeile in Tabellenblatt einfügen
    • Zeile kopieren und einfügen
    • Leere Zeile löschen
  • Code:

    
    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