Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

DropDown (Datenüberprüfung) bei Aktivierung automatisch aufklappen - Update
#1
Hallo Forum,

alternativ zur bekannten Methode, ein DropDown-Objekt aus der Datenüberprüfung per Sendkeys automatisch aufzuklappen, hier eine alternative Lösung mit der Maus, sozusagen als virtueller Mitarbeiter....

Beim Code zum Beitrag vom 07.11.2023 mit gleichem Betreff hatte sich noch ein kleiner Klammerfehler eingeschlichen. Fällt nicht auf, so lange die Excelseite nicht gezoomt ist.
Bei gezoomtem Bildschirm wurde die vertikale Mausposition jedoch falsch berechnet, da Excelpixel anstelle von Screenpixel verwendet wurden.


Code:

Option Explicit

Private Declare PtrSafe Function SetCursorPos Lib "user32" ( _
        ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" ( _
        lpPoint As POINTAPI) As Long
Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Declare PtrSafe Sub mouse_event Lib "user32" ( _
        ByVal dwFlags As Long, _
        ByVal dx As Long, ByVal dy As Long, _
        ByVal cButtons As Long, ByVal dwExtraInfo As LongPtr)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Datenüberprüfung (Dropdown) automatisch aufklappen
  Dim Pt As POINTAPI
  
  On Error GoTo Fehler
' Testen, ob Dropdown vorhanden
  If Target.Validation.Type <> xlValidateList Then Exit Sub

  With ActiveWindow.ActivePane
       GetCursorPos Pt              ' Mausposition retten
       SetCursorPos .PointsToScreenPixelsX(Target.Offset(1, 1).Left) + 10, _
                    .PointsToScreenPixelsY(Target.Offset(1, 1).Top) - 10
       mouse_event &H6, 0, 0, 0, 0  ' Buttonclick leftdown + leftup
       SetCursorPos Pt.x, Pt.y      ' Alte Mausposition wiederherstellen
  End With
Fehler:
End Sub

_________
viele Grüße
Karl-Heinz
Antworten Top


Gehe zu:


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