Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema SpinButton
BildScreenshot zu SpinButton SpinButton-Seite mit Beispielarbeitsmappe aufrufen

Listboxeintrag mit Maus verschieben | Herbers Excel-Forum


Betrifft: Listboxeintrag mit Maus verschieben von: detlef
Geschrieben am: 18.01.2010 11:30:52

Hallo Excel-Profis;
ich hab mir da was gebastelt zum Verschieben eines Eintrags in einer Listbox mit der Maus; das entspricht mit sicherheit nicht dem Programmierstandart aber es funktioniert erst mal;
Brauche dazu eine Userform1, und eine zweispaltige Listbox1 wobei beim Einlesen in der zweiten Spalte als Hilfselement die jeweilige Indexnummer steht, kann das jemand professioneller bauen?

Public merk1 'zum Merken der Altposition
Public merk2 'zum Merken der Neuposition

Private Sub ListBox1_Click()
'Position merken von der der Eintrag verschoben werden soll
If merk1 = "" Then merk1 = ListBox1.ListIndex
End Sub
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
 _
 ByVal Y As Single)
'Position merken nach der der Eintrag verschoben werden soll
If merk2 = "" Then merk2 = ListBox1.ListIndex
'sind beide Positionen gleich beenden
If merk1 = merk2 Then
merk1 = ""
merk2 = ""
ListBox1.ListIndex = -1
Exit Sub
End If
'von unten nach oben verschieben
If merk1 > merk2 Then
ListBox1.List(merk1, 1) = merk2
ListBox1.List(merk2, 1) = merk2 + 1
For a = merk2 To merk1
If a = ListBox1.ListCount - 1 Then GoTo sort
If ListBox1.List(a, 1) = ListBox1.List(a + 1, 1) Then
ListBox1.List(a + 1, 1) = a + 2
End If
Next a
End If
'von oben nach unten verschieben
If merk1 < merk2 Then
ListBox1.List(merk1, 1) = merk2 - 1
For b = merk2 - 1 To merk1 + 1 Step -1
ListBox1.List(b, 1) = b - 1
Next b
End If
'sortieren
sort:
With ListBox1
    For iLast = 0 To .ListCount - 1
        For iNext = iLast + 1 To .ListCount - 1
            If CDbl(.List(iLast, 1)) > CDbl(.List(iNext, 1)) Then
                iTmp0 = .List(iLast, 0)
                iTmp1 = .List(iLast, 1)
                .List(iLast, 0) = .List(iNext, 0)
                .List(iLast, 1) = .List(iNext, 1)
                .List(iNext, 0) = iTmp0
                .List(iNext, 1) = iTmp1
            End If
        Next iNext
    Next iLast
End With
merk1 = ""
merk2 = ""
ListBox1.ListIndex = -1
End Sub
Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 0 To 19
        ListBox1.AddItem
        ListBox1.List(i, 0) = "Eintrag " & i
        ListBox1.List(i, 1) = i
    Next i
End Sub
Noch mal vielen Dank an Martin S. für deine Antwort vom 13.01.2010 funktioniert prima aber eben immer nur eins rauf oder runter

  

Betrifft: Meinste Drag and Drop ?? von: Renee
Geschrieben am: 18.01.2010 11:56:17

Hi,

Wo ist den die Listbox platziert ? UF oder Tabellenblatt ?

GreetZ Renée


  

Betrifft: OT: Hi, Renée, doch kein Skiunfall oder... von: Luc:-?
Geschrieben am: 18.01.2010 13:36:50

...schon wieder genesen oder liegt's am Tauwetter...? ;-)
Gruß Luc :-?


  

Betrifft: OT: Die Schweine haben mich gegrippt ;-) oT von: Renee
Geschrieben am: 18.01.2010 13:48:02




  

Betrifft: Oje, so ein Pech! Das 1.Opfer, dessen... von: Luc:-?
Geschrieben am: 18.01.2010 21:46:37

...Name mir was sagt... ;-)
Weiter gute Besserung!
Gruß Luc :-?


  

Betrifft: AW: Oje, so ein Pech! Das 1.Opfer, dessen... von: detlef
Geschrieben am: 20.01.2010 19:57:04

Hallo Luc;
das war jetzt wohl aber nicht für mich bestimmt
Gruß Detlef


  

Betrifft: Bist du auch krank...? Gruß owT von: Luc:-?
Geschrieben am: 23.01.2010 01:28:53

:-?


  

Betrifft: AW: Meinste Drag and Drop ?? von: detlef
Geschrieben am: 18.01.2010 14:05:02

Hallo Renée;
die Listbox ist auf der Userform und ja ich mein sowas wie Drag and Drop nur mit den Infos aus der Excelhilfe komm ich nicht klar

Detlef


  

Betrifft: AW: Meinste Drag and Drop ?? von: Renee
Geschrieben am: 18.01.2010 15:41:42

Hi Detlef,

OK, dann machen wir mal ein kleines Beispiel

GreetZ Renée


  

Betrifft: AW: Meinste Drag and Drop ?? von: detlef
Geschrieben am: 18.01.2010 15:51:07

Hallo Renée;
das funzt schon ganz gut aber ich bekomme den Eintrag 1 mit einem mal verschieben nur hinter Position 7 ganz ans Ende gehts nicht

Trotzdem super; wenn ich mir da meinen Mist ansehe


  

Betrifft: AW: Meinste Drag and Drop ?? von: Renee
Geschrieben am: 18.01.2010 15:55:21

Hi Detlef,

Also ich kann den Eintrag 1 VOR den Eintrag 10 verschieben und anschliessend den Eintrag 10 vor den Eintrag 1.

Die Frage ist also nur ob du den Drop VOR oder NACH dem Eintrag machst, wo sich der Mousepointer befindet. Hier ist es mit immer VOR den Eintrag realisiert.

GreetZ Renée


  

Betrifft: AW: Meinste Drag and Drop ?? von: detlef
Geschrieben am: 18.01.2010 15:59:55

Hi Renee
bei mir hopst der immer 3 Einträge vor dem Mauszeiger rein

Detlef


  

Betrifft: AW: Meinste Drag and Drop ?? von: detlef
Geschrieben am: 18.01.2010 16:17:01

Hallo Renee
war ich wohl selber Schuld hatte die Höhe der Listbox vergrößert, wenn die genau hinter Eintrag 10 abschließt hopst Eintrag 1 auch vor Eintrag 10; meine Listbox kann ich aber nicht so groß machen (Höhe), habe rechts den Scrollbalken, kann man da was machen?
Detlef


  

Betrifft: AW: Meinste Drag and Drop ?? von: Renee
Geschrieben am: 18.01.2010 16:21:28

Hi Detlef,

Dann sag doch nächstes mal, was du anders gemacht hast, sonst such ich in meinem Beispiel nach dem Fehler. Das Drag & Drop und gleichzeitiges scrollen wird schwierig. Denn während des Drags kann ich nicht noch den Scrollbalken bewegen. Die Frage ist also:
Warum muss die Listbox so klein sein ?
Soll ich wirklich nach ner Lösung suchen oder lieber nen weiteren Tee trinken ?

GreetZ Renée


  

Betrifft: AW: Meinste Drag and Drop ?? von: detlef
Geschrieben am: 18.01.2010 16:28:56

Sorry Renee
hast mir super geholfen, lassen wir´s erst mal gut sein und trink deinen hoffentlich heißen Tee bei diesen Sauwetter;
Listbox muß so klein sein da auf der UF noch mehr drauf ist und in der Box 20 und mehr Einträge sein können, die ist dynamisch je nach Bedarf, die Liste enthält Einträge mit Blattnamen die je nach Bedarf in einer neuen Mappe zusammengestellt werden, eben mal mit mehr oder weniger Tabellen und in anderer Reihenfolge
Detlef


  

Betrifft: AW: Meinste Drag and Drop ?? von: detlef
Geschrieben am: 18.01.2010 17:14:28

Hallo Renee
ich noch mal; geht das auch mit einer mehrspaltigen Listbox?
Gruß Detlef


Beiträge aus den Excel-Beispielen zum Thema "Listboxeintrag mit Maus verschieben"