Hinweis

Beim durchblättern älterer Beiträge habe ich festgestellt, dass einige Beispiele bei Excelversionen größer XL 97 nicht funktionieren.
Das liegt daran, dass sich die Klassennamen der Benutzerformen bei den verschiedenen Versionen unterscheiden. Zu Beginn meiner Excel-Laufbahn habe ich ausschließlich mit Excel 97 gearbeitet und dort war der Klassenname noch "ThunderXFrame".
Sucht man nun das Fensterhandle einer Benutzerform und benutzt diesen Klassennamen, wird unter anderen Excelversionen (<> XL97) das Handle nicht gefunden.

   MyFormHwnd = FindWindow("ThunderXFrame", Me.Caption)

Abhilfe schafft man, indem man den Klassennamen durch die Konstante vbNullString ersetzt.

    MyFormHwnd = FindWindow(vbNullString, Me.Caption)

Momentan verwende ich eine etwas andere Methode, Fensterhandles von Benutzerformen zu ermitteln, indem ich den Fenstertitel, also die Caption der Benutzerform temporär ändere und nach dem geänderten Titel suche.
Durch Verwendung einer nahezu unverwechselbaren Zeichenkette wird auschließlich das Handle der Benutzerform gefunden, dessen Titelleiste geändert wurde.

  Private Function GetMyHandle() As Long
   
Dim strMe   As String
   
Dim strFind As String
   
   
' Liefert das Handle der Userform
   strFind = 
"asdfghjk"
   strMe = Me.Caption
   Me.Caption = strFind
   GetMyHandle = FindWindow(vbNullString, Me.Caption)
   Me.Caption = strMe
End Function

Falls dennoch Probleme auftreten, können Sie mich anmailen, ich werde dann versuchen, Ihnen im Rahmen meiner Möglichkeiten weiterzuhelfen.

Noch etwas.
Wenn Sie sich den Code älterer Mappen anschauen, werden Sie feststellen, dass dort keine Präfixe für Variablen verwendet wurden, die die Gültigkeit und den Datentyp angeben. Außerdem wurden zum Teil die Datentypen bei der Deklaration nicht ausgeschrieben.
Man lernt aber im Laufe der Zeit hinzu und mittlerweile struktuiere ich meinen Code auch etwas anders. Ich habe aber keine große Lust dazu, alles auf den neusten Stand zu bringen, also sehen Sie es mir nach und verbuchen die Abweichungen von der heute verwendeten Form unter Jugendsünden oder Anfängerfehler.

In meinem Buch Excel-VBA gehe ich übrigens auch auf die Struktuierung von Code und die Verwendung von Präfixen bei Variablen ein. Außerdem wird dort unter anderem die Codeoptimierung in Bezug auf Lesbarkeit und Geschwindigkeit behandelt. Für den ambitionierten VBA-Programmierer sicherlich ein sehr wichtiges Thema.