Clever-Excel-Forum

Normale Version: Listbox und Spinbutton, ganze Zeile verschieben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

Ich habe wieder einmal ein kleines Problem. In einer Userform habe ich eine Listbox und einen SpinButton. Über den Spinbutton will ich die Zeilen-Reihenfolge verschieben. Das habe ich mit meinen spärlichen VBA Kenntnisse fast geschafft. Leider kann ich aber nur eine Spalte (In diesem Fall die Spalte A) verschieben. Wie muss ich den Code ändern, damit mir die GANZE Zeile verschoben wird. Vielleicht kann mir (zum wiederholten Mal) jemand dabei helfen. Danke

PHP-Code:
Private Sub SpinButton_Sortieren_SpinDown()
  Dim sTmp As StringAs Integer
  i 
Listbox_Test.ListIndex
  
If > -And Listbox_Test.ListCount 1 Then
    sTmp 
Listbox_Test
    With Listbox_Test
      
.List(i) = .List(1)
      .List(1) = sTmp
      
.ListIndex 1
      Worksheets
("Fahrzeug").Range("A2:H50") = .List
      TextBox1 Listbox_Test.List(Listbox_Test.ListIndex0)
        TextBox2 Listbox_Test.List(Listbox_Test.ListIndex1)
    End With
  End 
If
End Sub

Private Sub SpinButton_Sortieren_SpinUp()
  Dim sTmp As StringAs Integer
  i 
Listbox_Test.ListIndex
  
If 0 Then
    sTmp 
Listbox_Test
    With Listbox_Test
      
.List(i) = .List(1)
      .List(1) = sTmp
      
.ListIndex 1
      Worksheets
("Fahrzeug").Range("A2:H50") = .List
      TextBox1 Listbox_Test.List(Listbox_Test.ListIndex0)
      TextBox1 Listbox_Test.List(Listbox_Test.ListIndex1)
    End With
  End 
If
End Sub

Private Sub UserForm_Initialize()
With Listbox_Test
    
.List = Worksheets("Fahrzeug").Range("A2:H50").Value
    
.ListIndex = -1
  End With
End Sub 
LG
Michael
Kannst du uns erzählen warum und wie die Folge geändert werden sollte ?
Hallo Michael,

Mit dem Spinbutton soll die Ausgabe in den Textboxen spaltenweise (Spalten der Listbox) verschoben werden?

Ohne SpinButton Textbox1 = geklickter Wert Spalte1 und Textbox2 = geklickter Wert Spalte2

Spinbutton einmal aufwärts geklickt:

Textbox1 = geklickter Wert Spalte2 und Textbox2 = geklickter Wert Spalte3

richtig so?

Gruß Uwe
Hallo Zusammen

Vielleicht habe ich mich falsch ausgedrückt. (Ich habe ein anderes Tabellenblatt geteilt, weils zu kompliziert wird) ich schreibe mal eine Kurzen Auszug welche Date in der Zeile stehe
Wagenummer / Ordnungsnummer / Sitzplätze 1.Kl  / Sitzplätze 2.Klasse / Eigengewicht /  BremsGewicht /  Fahrzeuglänge usw

Frage 1 warum ich das Ändern möchte
Es geht um eine Wagenliste (Eisenbahn) ein Beispiel

Der Zug kommt in München so an 

OrdnungsNummer 10   / 50t  / 50 Pl / usw 
OrdnungsNummer 20   [b]/ 54t  / 49 Pl / usw [/b]
OrdnungsNummer 30[b]   [b]/ 51t  / 40 Pl / usw [/b][/b]
OrdnungsNummer 40[b][b][b]   [b]/ 49t  / 20 Pl / usw [/b][/b][/b][/b]

Ein Wagen wird dann umgereiht und der Zug fährt dann so weg
OrdnungsNummer 30[b][b]  [b]/ 51t  / 40 Pl / usw [/b][/b][/b]
OrdnungsNummer 10  [b]/ 50t  / 50 Pl / usw [/b]
OrdnungsNummer 20[b]  [b]/ 54t  / 49 Pl / usw [/b][/b]
OrdnungsNummer 40[b][b]  [b]/ 49t  / 20 Pl / usw [/b][/b][/b]

aus diesem Grund will ich die ganze Zeile verschieben. Ich hoffe dass ich das verständlicher erklärt habe. Da bin ich nicht so gut drinnen (So wie meine VBA Kenntnisse)

Und das Ganze wird dann Spaltenweise in die Textboxen eingetragen, damit ich diese gesondert bearbeiten kann und diese dann  zurück ins Blatt schreiben kann
LG
Michael
Hi

Beispiel für das Verschieben.
Code:
Private Sub SpinButton_Sortieren_SpinDown()
Dim Kopie, alt As Integer, neu As Integer, i As Integer

With Listbox_Test
alt = .ListIndex
If alt <> -1 Then
   neu = IIf(alt = .ListCount - 1, 0, alt + 1)
    Kopie = .List
    For i = 0 To .ColumnCount - 1
       .List(neu, i) = Kopie(alt, i)
       .List(alt, i) = Kopie(neu, i)
    Next i
End If
End With
End Sub

Private Sub SpinButton_Sortieren_SpinUp()
Dim Kopie, alt As Integer, neu As Integer, i As Integer

With Listbox_Test
alt = .ListIndex
If alt <> -1 Then
   neu = IIf(alt = 0, .ListCount - 1, alt - 1)
    Kopie = .List
    For i = 0 To .ColumnCount - 1
       .List(neu, i) = Kopie(alt, i)
       .List(alt, i) = Kopie(neu, i)
    Next i
End If
End With
End Sub
Gruß Elex
Ihr seid echt der Wahnsinn

Danke für die Hilfe..
Lg
Michael