Während sich die Frage nach dem Handle des Hauptfensters der Userform noch eindeutig beantworten lässt, ist dies für die Controls auf dem Hauptfenster nicht immer möglich.

Der Versuch mit Spy++ liefert grundsätzlich nur zwei Kinder-Fenster.

Offensichtlich ist es so, dass die Kinder-Controls lediglich in einem Behälter abgebildet werden.

Um trotzdem zu einem Handle zu kommen, gibt es folgenden Trick:

  • das fragliche Control mit SetFocus aktivieren
  • mit der  Api-Funktoin 'GetFocus' den Handle ermitteln

Leider sind die Handle für alle Buttons gleich. Auch die Handles der Option- und Check-Boxen sind identisch.

Im einzelnen:

Kontroll-Typ Ergebnis
 Label  Uneindeutig
 TextBox  Uneindeutig
 ComboBox  Uneindeutig
 ListBox  Eindeutig
 CheckBox  Uneindeutig
 OptionButton  Uneindeutig
 ToggleButton  Uneindeutig
 Frame  Eindeutig
 CommandButton  Uneindeutig
 TabStrip  Uneindeutig
 MultiPage  Eindeutig
 ScrollBar  Uneindeutig
 SpinButton  Uneindeutig
 Image  Uneindeutig
 TreeView  Eindeutig
 ProgressBar  Eindeutig

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Mit anderen Worten: Sinnvoll einsetzbar sind Api-Anweisungen allenfalls bei folgenden VBA-Controls:

  • ListBox
  • Frame
  • MultiPage
  • TreeView
  • ProgressBbar

Hierbei ist darauf zu achten, dass der Handle bei jedem Aufruf desselben Controls einen anderen Wert annimmt.

Zum Seitenanfang