2010-06-04 3 views
1

Excel 2002 (XP)/2003 용 VBA로 작성된 구식 응용 프로그램을 유지 관리하고 있으며이를 국제화하려고합니다.VBA에서 사용자 폼의 제목 표시 줄 텍스트를 변경하는 방법?

이렇게하려면 번역 된 문자열을 동적으로 읽고 해당 .Caption 속성을 업데이트하여 내 userform의 다양한 컨트롤을 업데이트하십시오.

양식의 .Caption 속성을 변경하면 제목 표시 줄에 "하드 코드 된"값이 계속 표시되고 대신 새 값이 표시됩니다 그 아래, 폼 자체의 "캔버스"의 맨 위에.

사용자 정의 폼의 제목 표시 줄 텍스트가 표시된 후에이를 변경하거나 제목 표시 줄에 반영되도록하기 전에 양식의 .Caption 속성을 변경해야합니까? 캔버스/클라이언트 영역보다는?

내 코드는 다음과 같이 보입니다 : 내가 말했듯이

' 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 = "###[email protected]@[email protected]@!!###" 
    ' ... 
    ' 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 

pForm.Caption에 할당이 영향을 않습니다를 -하지만 그것은 바로 아래에 오히려 창의 제목 표시 줄에 쓸 수 있지만하지 않습니다 . Windows XP SP 3에서 Excel 2003을 실행하고 있습니다.

답변

1

frmFoo은 실제로 UserForm과 같은 유형이 아니라 VBA의 wierd OO 구현에서 내부적으로 "내림차순"되어 있으므로 안정적으로 사용할 수 없습니다 매개 변수 유형으로 대신 Object를 사용하면됩니다.

Sub TranslateDialog(pForm As Object, pFormName As String) 
+0

귀하의 도움에 감사드립니다. 그것은 정말로 효과가있었습니다. –