bluelines
Goto Top

VBA - Scroll Ereignis für Tabellenblatt um Combobox zu beeinflussen

Hallo an alle

Ich hoffe ihr könnt mir helfen. Ich habe ein Tabellenblatt in dem ich in Zeile 6 ab Spalte AJ Datumsangaben vom 1.1.18 bis zum 31.12.18 habe, nach jedem Monat sind noch ein paar Berechnugsspalten dazwischen. Jeder Monat hat einen Bereichsnamen bekommen „Jänner „ bis „Dezember“.

Auf dem Tabellenblatt ist eine Combobox die beim Mappen Start ebenfalls mit den Monatsbezeichnungen gefüllt wird und bei Auswahl eines Monats Scrollt die Tabelle vor bis zum ersten des gewählten Monats über
Case "Dezember_19"  
                     Application.Goto Reference:=Worksheets("Aktuelles Jahr") _  
                     .Range(Cells(lngZielZeile, Range(Auswahl).Column).Address), Scroll:=True
das passt ja auch soweit.

Mein Problem besteht drin, das wenn ich das Tabellenblatt über Pfeiltasten oder Bildlaufleiste selbst verschiebe, nach links oder rechts. Dann gelange ich zum nächsten Monat bspw. vom Februar in den März aber in der Combobox steht noch immer Februar.

Ich bin auf der Suche nach einer Möglichkeit den richtigen Monat in der Combobox anzuzeigen. Eine Art Scroll Ereignis so das wenn 70 % des nächsten angrenzenden benannten Bereiches im Bild ist der Text der Combobox sich ändert auf den nächsten Wert. Oder sich zumindest Löscht damit nicht der Falsche Monat dort steht.

Hat da jemand eine Idee? oder noch besser ein komentiertes Beispiel wie man das macht.

Grüße
Blue

Content-Key: 394694

Url: https://administrator.de/contentid/394694

Printed on: April 24, 2024 at 14:04 o'clock

Member: BlueLines
BlueLines Dec 05, 2018 at 05:53:51 (UTC)
Goto Top
Hallo, kleines Update

Meine Frag ist im begriff sich zu erledigen; wirft aber ne neue frage auf:

In Excel scheint es keine direkte Möglichkeit zu geben ein Makro auszulössen wenn der anwender in einem Tabellenblatt Scrolt. Jedoch lässt sich mit:
ActiveWindow.ScrollColumn
die erste auf dem Bildschirm sichtbare spalte ermittelnund mit:
ActiveWindow.VisibleRange.Columns.Count
Gibt die letzte Spalte des sichtbaren Bereichs aus. Ist aber dann die wo man dann auch ev. nur die hälfte davon sehen kann. Je nach breite der Spalten.

Bei mir haben die benannten Bereiche so um die 40 Spalten immer neben einander der Bereich August geht zbsp. von spalte 323 bis 363. Daraus lässt sich die ungefähre Scrollposition glaub ich ermitteln.

Weis vielleicht jemand ob es sehr Arbeitsspeicher intensiv ist wenn ich
ActiveWindow.ScrollColumn
ActiveWindow.VisibleRange.Columns.Count
Aufrufe. Eine andere Möglichkeit sehe ich grade nicht.

Grüße Blue
Mitglied: 137846
Solution 137846 Dec 05, 2018 updated at 10:34:17 (UTC)
Goto Top
http://www.cpearson.com/excel/DetectScroll.htm
Oder ohne DLL was zumindest beim SelectionChange funktioniert
https://we.tl/t-DiNOoyMrAP
Member: BlueLines
BlueLines Dec 07, 2018 at 04:32:08 (UTC)
Goto Top
Danke für die Bsp. Datei und den Link, das hat mir sehr geholfen.

Grüße
Blue
Member: BlueLines
BlueLines Dec 07, 2018 at 06:57:04 (UTC)
Goto Top
Hallo

Eine kleine Frage hätte ich da noch, ist aber nur eine Verständnisfrage. Warum kannst du in deinem Code schreiben:
        For i = 1 To 12
            .comboMonat.AddItem MonthName(i)
        Next
und ich muss schreiben:
Sub Fuellen(ws As Worksheet, Jahr As Integer)
'Füllen von Comboboxen  

    With ws
        .OLEObjects("cboMonatWeahlen").Object.Clear  
        For i = 1 To 12
            .OLEObjects("cboMonatWeahlen").Object.AddItem MonthName(i) + "_" & Jahr  
        Next
wenn ich schreibe
.cboMonatWeahlen.AddItem MonthName(i)
gibt's nen Fehler. Ich würde nur gerne verstehen warum du ohne:
.OLEObjects("cboMonatWeahlen").Object.  
auskommst???

Grüße
Blue
Mitglied: 137846
Solution 137846 Dec 07, 2018 updated at 08:27:03 (UTC)
Goto Top
Weil ich eine ActiveX Combobox genommen habe, kein Formularsteuerelement face-smile. Diese haben meist mehr Möglichkeiten und lassen sich im Sheet direkt ansprechen.