So ändern Sie die Titelleiste einer Userform in VBA?

Pflege ich einen old-ish-Anwendung geschrieben in VBA für Excel 2002 (XP)/2003, und ich versuche zu internationalisieren.

Um dies zu tun, lese ich in der übersetzten strings dynamisch und aktualisieren Sie die verschiedenen Steuerelemente auf meinem userform, indem Sie die Aktualisierung Ihres .Caption-Eigenschaft.

Dies funktioniert wie erwartet für alle Steuerelemente, aber nicht für das Formular selbst -- wenn ich die form ändern .Caption-Eigenschaft, dann ist die Titelleiste hält die Anzeige der "hart-kodiert" der Wert und der neue Wert wird stattdessen angezeigt, nur unten, an der Spitze der "Leinwand" des Formulars selbst.

Ist es möglich, zu ändern ist der text der Titelleiste eines UserForm-Objekts, nachdem es sich gezeigt hat, ist oder muss ich das ändern .Caption-Eigenschaft der form ist, bevor es angezeigt wird, damit es sich in der Titelleiste anstatt im canvas - /client-Bereich?

Mein code sieht ungefähr so aus:

' in frmFoo
Private Sub UserForm_Activate()
    ' ...
    TranslateDialog Me, "frmFoo"
    ' ...
End Sub

' in a VBA module
Sub TranslateDialog(pForm As UserForm, pFormName As String)
    Dim new Caption As String
    Const notFound As String = "###!!@@NOTFOUND@@!!###"
    ' ...
    ' GetMessage() returns the translated message for a given key, or the
    ' default value (second parameter) if no translation is available.
    ' The translation key for the form caption is the form name itself.
    newCaption = GetMessage(pFormName, notFound)
    If newCaption <> notFound Then pForm.Caption = newCaption
    ' ...
End Sub

Wie gesagt, die Zuordnung zu pForm.Caption eine Wirkung - muss es aber nicht schreiben, um die Titelleiste des Fensters, sondern direkt darunter. Ich bin mit Excel 2003 auf Windows XP SP 3.

InformationsquelleAutor Philip Newton | 2010-06-04

Schreibe einen Kommentar