Listbox sortieren nur mit Maus
#1
Hallo Nochmal

Ich werde leider im Netz nicht fündig und flippe bald aus. Ich vermute mal, dass das nicht möglich ist. Aber ich will mal euch Profis fragen.

In einer Listbox lese ich einen bestimmten Bereich ein. Mit Hilfe eines SpinButtons kann ich den Zellenbereich über selektierte Zeile der Listbox verschieben. Das funktioniert ganz gut.
Wäre das Verschieben ohne den SpinButton möglich? Sondern direkt in der selektierten Zeile der Listbox, mithilfe der Maus?



LG
und Danke 
Michael


Angehängte Dateien
.xlsm   Listbox_Sortieren_ - Kopie.xlsm (Größe: 36,29 KB / Downloads: 12)
Antworten Top
#2
Hallo Michael,

Sollen Spalten auf/abwärts sortiert werden?
So richtig verstehe ich dein Ansinnen noch nicht.
 
Man könnte nämlich mit etwas Aufwand, wenn es unbedingt eine Listbox sein muss, das mit Rechts-/Linksklick auf ein Label über der Spalte machen.
Wobei aus diesem Blickwinkel einfach die Verwendung einer Listview der simplere Weg ist. Das geht dann mit ein paar wenigen zusätzlichen Programmzeilen.
 
Gruß Uwe
Antworten Top
#3
HI Uwe
Die Sache ist, dass die Userform bzw die Arbeitsmappe sehr komplex ist. Das ist nur ein Auszug. Mit der Userform werden noch viele andere Sachen geändert.
Es wird dann ein bestimmter Bereich in die Hilfstabelle kopiert, bearbeitet sortiert und dann wieder zurückkopiert und dann als Mail versendet.

Es müsste bzw sollte die Ganze Zeile verschoben werden (auf oder Abwärts). 
Überschriften brauche ich nicht. 

LG
Michael
Antworten Top
#4
Ja und wo liegt das Problem?

Die Ganze Zeile wird doch in der Listbox verschoben, mittels:
Code:
For i = 0 To .ColumnCount - 1
u.s.w.
wird Spalte für Spalte abgeklappert.

Gruß Uwe
Antworten Top
#5
Danke Uwe
Für dich ist das kein Problem. Für mich aber ein gewaltiges   17 Ich brauche für so Kleinigkeiten tlw, Tage, Darum bewundere ich euch, wie ihr das jedesmal hinbekommt
Ich habe mir meine bescheidenen Kenntnisse mithilfe der Foren angeeignet.

Ich bekomme das verschieben der Zelle nur mit den Buttons zusammen. Das klappt ja auch. Ich will die Zeile aber direkt mit der Maus, ohne Spinbutton, in der Listbox verschieben
Eventuel mit  MouseDown und MouseUp Ereignis
LG
Michael
Antworten Top
#6
Schau mal Gleis 1 an:
Doppelklick im ListBox zum sortieren (asc, desc)
Verwende .xlsb.


Angehängte Dateien
.xlsb   __Listbox_Sortieren_snb.xlsb (Größe: 17,29 KB / Downloads: 7)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Hallöchen,

hier mal ein "absichtliches Mißverstehen". Mit diesem Code könntest Du die Spinbutton-Funktion mit der Maus ersetzen. Allerdings nicht ganz, weil die Markierung immer unter der Maus Smile bleibt. Wenn Du einen Eintrag 3 Zeilen hochrücken willst, musst Du immer mit der Maus nachrücken und dann nochmal drücken. Bleibst Du mit der Maus auf einer Stelle, werden zwei Einträge immer nur getauscht.

Ich habe dazu mal Deinen bisherigen Code genutzt.

Ich denke aber, Du willst in der Listbox eine "Zeile" mit der Maus festhalten und die dann ein paar Zeilen hoch oder runter schieben, ohne x mal zu drücken.

Code:
Private Sub Listbox_Test_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Kopie, alt As Integer, neu As Integer, i As Integer
Dim sTmp As String, ii As Integer
    If Button = 1 Then
        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("A2:H11") = .List
            Next i
        End If
        End With
    End If
    If Button = 2 Then
      i = Listbox_Test.ListIndex
      If Listbox_Test.ListIndex = 0 Then
        Exit Sub
      End If
      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)
              .ListIndex = alt - 1
              Worksheets("Hilfstabelle").Range("A2:H11") = .List
            Next i
        End If
      End With
    End If
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Hallo miteinander,

ich gebe auch mal meinen Dreier mit dazu. Ebenfalls unter Nutzung der vorhandenen Codes.
In meinem Fall mit der rechten Maustaste eine nach unten und mit der rechten Maustaste + Shift eine nach oben.

.xlsm   Listbox_Rechte Maustaste + Shift.xlsm (Größe: 38,96 KB / Downloads: 4)

Gruß Uwe
Antworten Top
#9
Hallo zusammen
Ich möchte mich bei euch bedanken. Echt super. Ich frage mich immer wieder, wie ihr sowas zusammenbringt
Ich dachte echt, dass das einfacher geht (Einfach das ChangeEreignis umstellen>>> Schäm) Das hätte ich niemals zusammen gebracht.
Ich wüsche euch allen noch schöne Feiertage

LG aus dem verschneitem Österreich

Michael 15
Antworten Top
#10
@Egon

Alternative:

Code:
Private Sub UserForm_Initialize()
  Listbox_Test.List = Sheets("Hilfstabelle").Cells(1, 2).CurrentRegion.Value
End Sub

Private Sub Listbox_Test_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal y As Single)
    If Button = 2 Then M_move Shift
End Sub

Private Sub M_move(y)
    If y = 0 And Listbox_Test.ListIndex = Listbox_Test.ListCount - 1 Then Exit Sub
    If y = 1 And Listbox_Test.ListIndex < 2 Then Exit Sub
   
    With Listbox_Test
        y = .ListIndex + 1 + 2 * (y = 1)
        sn = Application.Index(.List, .ListIndex + 1)
        .List(.ListIndex, 0) = .List(y, 0)
        .List(.ListIndex, 1) = .List(y, 1)
        .List(y, 0) = sn(1)
        .List(y, 1) = sn(2)
        .ListIndex = y
    End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste