Clever-Excel-Forum

Normale Version: Listbox Wenn letzte Zeile erreicht, dann Fehler
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen
Ich bastle mir gerade eine Listbox mit welcher ich die Daten im Tabellenblatt verschieben kann, was soweit ganz gut funktioniert. Die Daten werden in eine Hilfstabelle kopiert, ausgelesen und dann wieder zurückkopiert.
Das Problem ist, wenn ich über die letzte Zeile gehe, kommt eine Fehlermeldung. Vielleicht hat jemand eine Idee was ich da wieder mal falsch gemacht habe.

LG
Michael


PHP-Code:
Private Sub SpinButton1_SpinDown()
Dim Kopiealt As Integerneu As IntegerAs Integer

With Listbox_Test
alt 
= .ListIndex
If alt <> -1 Then
  neu 
IIf(alt = .ListCount 10alt 1)
    Kopie = .List
    For 0 To .ColumnCount 1
      
.List(neui) = Kopie(alti)
      .List(alti) = Kopie(neui)
    .ListIndex alt 1
          Worksheets
("Hilfstabelle").Range("A3:c12") = .List
    
    Next i
    
End 
If
End With
End Sub 
Hallo, 19 

eine Möglichkeit: 21 

Code:
Private Sub SpinButton1_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)
                If .ListIndex <> .ListCount - 1 Then .ListIndex = alt + 1
                Worksheets("Hilfstabelle").Range("A3:C12") = .List
            Next i
        End If
    End With
End Sub
Wie toll ist das denn? Super.... Dankeschön

Wenn ich so unverschämt sein darf. Kann man das auch so machen, dass das an der letzten Stelle gestoppt wird und nicht wieder von oben anfängt? Oder dass die Markierung auch nach oben springt. Es genüg schon ein kleiner Hinweis, den Rest bastle ich mir schon zusammen

LG
Michael
Ich habe den Listbox umbenennt in 'LB_00'

Dann reicht in VBA:

Code:
Private Sub SpinButton1_SpinDown()
  With LB_00
    If ListIndex < .ListCount - 1 Then
    st = Evaluate("row(1:" & .ListCount & ")")
    st(.ListIndex + 2, 1) = .ListIndex + 1
    st(.ListIndex + 1, 1) = .ListIndex + 2
   
    .List = Application.Index(.List, st, Evaluate("transpose(row(1:" & UBound(.List, 2) + 1 & "))"))
    End If
  End With
End Sub
Mutatis Mutandis für Spinbutton1_SpinUP
Hi danke für deine Hilfe

Ich bin eigentlich begeistert wieviele Lösungen es gibt. Nur ich stehe auf dem Schlauch

LG
Michael

Keep it simple
Nochmal ein herzliches Dankeschön

Für euch ist es simpel. Für mich ist das eine Wochenaufgabe

LG
Michael
Wie gesagt: es kann immer einfacher.