Registriert seit: 18.04.2014
Version(en): Office 2010
Ich habe mir mal alle eure Vorschläge genauer betrachtet. Diese Listbox Überschriften Klick Version ist ja genial.
Die Sache hat nur einen Haken. Ich habe nichts, aber auch wirklich gar nichts davon verstanden, was da innerhalb des innerhalb des Listbox1_MouseDown Ereignisses steht.
Ich werde mal versuchen die CB zu gruppieren.... Danke euch sehr für die Vorschläge....
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Achim,
wenn Du genau beschreibst, wie bei Click auf die einzelnen Überschriften sortiert werden soll, dann kann ich Dir das Ganze auf Deine Bedürfnisse anpassen.
Die Funktionsweise kann ich Dir heute Abend erklären. Gestern fehlte mir die Zeit dazu. Wie gesagt, es ist recht einfach und mit ein wenig Hilfestellung bekommst Du es sicher hin.
Gruß Atilla
Registriert seit: 18.04.2014
Version(en): Office 2010
Code: ListBox1.ColumnWidths = "40;0;0;44;0;60;35;20;60;40;0;0;0;0;0;0;0;0;0;0;0;0;42;130;170;0;0;0;0;0;0;0;50;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0"
Sort_A = "W4" 'Startsortierung beim Öffnen der UF Sort_B = "A4" Sort_C = "BQ4"
Sort_A = "A4" 'Bei Klick auf OB für ØD1 Sort_B = "D4" Sort_C = "W4" Call Sortieren
Sort_A = "D4" 'Bei Klick auf OB für NL Sort_B = "A4" Sort_C = "W4" Call Sortieren
Sort_A = "W4" 'Bei Klick auf OB für Typ Sort_B = "A4" Sort_C = "A4" Call Sortieren
Habe jetzt nicht die ganze Sub der einzelnen OB rausgezogen. Das wären 4 OptionButton für 4 Sortierungen in den jeweiligen Spalten. In einem anderen Bereich sieht das genau so aus, nur das andere Spalten in der Listbox zu sehen sind. Reicht dir das aus als Info?
Registriert seit: 18.04.2014
Version(en): Office 2010
Es lässt mir keine Ruhe, was dieses Listbox_MouseDown Ereignis betrifft.
Ich habe jetzt mal dieses Listbox1_MouseDown Ereignis in meine Userform1 eingesetzt und einfach mal laufen lassen. Nicht zu fassen. Das funktioniert ohne Fehler.
Aber ich kann die Zahlen im Ereignis nicht interpretieren.
Das geht schon mit den Variablen x und y los. y < 15...Für was steht die 15? Case 1 To 76, 5.... 76? 5?
Wenn ich jetzt noch wüßte wie ich die Zahlen ändern muss, damit die richtigen Spalten angesprochen werden, dann müsste es klappen....
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Achim, (16.08.2014, 14:24)maine-coon schrieb: Das geht schon mit den Variablen x und y los. y < 15...Für was steht die 15? Case 1 To 76, 5.... 76? 5?
Wenn ich jetzt noch wüßte wie ich die Zahlen ändern muss, damit die richtigen Spalten angesprochen werden, dann müsste es klappen.... Mal aus der Hilfe rauskopiert Zitat:X, Y Erforderlich. Die horizontale oder vertikale Position in Punkten vom linken oder oberen Rand des Formulars, Rahmen-Steuerelements (Frame) oder Page-Objekts. Bei y: von wie weit oben von der Listbox soll der Mausklick ausgewertet. Bei x: Du hast doch hier Zitat:ListBox1.ColumnWidths = "40;0;0;44;0;60;35;20;60;40;0;0;0;0;0;0;0;0;0;0;0;0;42;130;170;0;0;0;0;0;0;0;50;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" deine Spaltenbreite von der Listbox angegeben. Wenn Du jetzt die einzelnen Spalten addierst, sollte Du auf die passenden Werte kommen.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 18.04.2014
Version(en): Office 2010
In der Beispieldatei hat die Listbox ein Height = 102,8 Widht = 229,5 Die Breite der Spalten ColumnWidhts wird nicht angegeben. Was also ist hier die 15 für Y, und was ist die 76 für X? 76 auf 3 Spalten...hmmm 25,33.... Select Case 76, 5 ...Komma 5...Für 5 Spalten?... Sind bloß 3 da.... Sorry, aber ich verstehe hier wirklich nur Bahnhof....
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Achim, Stefan hat Dir ja schon entscheidende Erklärungen gegeben, von mir noch Code mit Kommentaren, in welchem Beispielhaft die ersten drei Spalten Deiner Listbox nachgestellt sind. Code: Private Sub Listbox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Y < 15 Then 'die Überschrift hat die Höhe von 14 Punkten (wenn auf der Position zwischen 0 und 15 Punkten in der Verticalen (Y) in die Listbox geklickt Richtung = IIf(Richtung = 1, 2, 1) ' wenn Richtung 1 dann 2, sonst eins (beim ersten Aufruf ist Richtung = 0, deshalb wird erst nach dem 2, Click erst sortiert, ab da immer ein Click solange Userform geladen) Select Case X ' (X gibt die Horizontale Position an) Case 1 To 40 'bis zur Breite ersten Spalte Sort_A = "A4" 'Bei Klick auf OB für ØD1 Sort_B = "D4" Sort_C = "W4" Call Sortieren Case 41 To 84 'ab Ende 1. Spalte + breite der zweiten sictbaren Spalte Sort_A = "D4" 'Bei Klick auf OB für NL Sort_B = "A4" Sort_C = "W4" Case 85 To 144 'Summe Spaltenbreite 1 + 2 + nächste sichtbare Spaltenbreite Sort_A = "W4" 'Bei Klick auf OB für Typ Sort_B = "A4" Sort_C = "A4" End Select End If
End Sub
Mit den Kommentaren im Code solltest Du das Prinzip verstehen können, sonst frag noch einmal nach. Noch eins zur Höhe der Überschrift: Das kannst Du entweder durch Näherungswerte herausfinden oder Du nimmst das Private Sub Listbox1_MouseDown bevor Code drin ist und lässt Dir Höhe nach Click von einer MsgBox anzeigen. So z.B: Code: Private Sub Listbox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) MsgBox Y End Sub
Gruß Atilla
Registriert seit: 18.04.2014
Version(en): Office 2010
Okay, jetzt habe ich es verstanden. Die Zahlen entsprechen so eine Art "Rahmen" wie bei einem Touchscreen. Innerhalb eines bestimmten Bereichs funktioniert dieser "Pseudo-Hyperlink" und löst das Ereignis aus.
Eine gute Idee, aber leider doch nicht für mich zu gebrauchen. Denn meine UF und natürlich auch die darin befindliche Listbox wird vom User auf seinen Screen angepasst. Das würde bedeuten, ich müsste die festgelegten Funktionsrahmen dynamisch an den screen anpassen.
Ein gigantischer Aufwand, den ich nicht machen möchte. Ich will mal versuchen meine 6 OB im Rahmen rauszunehmen, dafür 6 CB einzubauen und als Gruppe definieren.
Ich danke euch vielmals für die Bemühungen und bitte um Entschuldigung, dass ich nicht erwähnt hatte, dass meine immer auf Screen-Max stehende UF vom User an seinen Screen angepasst wird.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Achim,
aber die Spalten in der Listbox werden doch nicht breiter oder schmäler oder sehe ich das falsch?
Gruß Stefan Win 10 / Office 2016
Registriert seit: 18.04.2014
Version(en): Office 2010
Nein, die ändern sich nicht; ebenso wie meine Werte in der Sub. Und es ist doch bestimmt ein Unterschied, ob ich mit 2560x1920, oder 1024x768 arbeite? Die UF ist immer auf Screen Max und der User kann mit Hilfe von 2 CommandButton das anpassen. Und zwar so: Code: Sub CommandButton6_Click() ' UF Kleiner If UserForm2.Zoom >= 70 Then With UserForm2 .Zoom = .Zoom - ZF .Height = .Height - 0 .Width = .Width - 3 Label16.Caption = "<<< " & .Zoom & "% >>>" UFZ = .Zoom End With Workbooks(strTF).Sheets("Listen").Range("A25") = UFZ Else UserForm10.CommandButton7.SetFocus End If End Sub
Private Sub CommandButton7_Click() 'UF Grösser If UserForm2.Zoom <= 200 Then With UserForm2 .Zoom = .Zoom + ZF .Height = .Height + 0 .Width = .Width + 3 Label16.Caption = "<<< " & .Zoom & "% >>>" UFZ = .Zoom End With Workbooks(strTF).Sheets("Listen").Range("A25") = UFZ Else UserForm10.CommandButton6.SetFocus End If End Sub
|