在VBA中沒有很好的語法。如果你真的需要初始化一個用戶定義類型的數組,你可以使用幾個輔助函數,像這樣做:
Public Type settings
key As String
german As String
french As String
End Type
Private Function NewTranslation(key As String, german As String, french As String) As settings
NewTranslation.key = key
NewTranslation.german = german
NewTranslation.french = french
End Function
Private Sub AddTranslation(translations() As settings, value As settings)
Dim u As Integer
u = -1
On Error Resume Next ' ubound raises an error if the array is not dimensioned yet
u = UBound(translations)
On Error GoTo 0
ReDim Preserve translations(0 To u + 1) As settings
translations(u + 1) = value
End Sub
Public Sub Main()
Dim translations() As settings
AddTranslation translations, NewTranslation("send", "Senden", "Enregister")
AddTranslation translations, NewTranslation("directory", "Verzeichnis", "Liste")
' and so on
End Sub
一個更好的方式做這方面的問題將是一個集合(圖)對象使用語言代碼和原始文本作爲關鍵字:
Private translations As New Collection
Public Sub Main()
With translations
.Add "Senden", "de:send"
.Add "Enregister", "fr:send"
.Add "Verzeichnis", "de:directory"
.Add "Liste", "fr:directory"
End With
MsgBox GetTranslation("de", "send")
End Sub
Public Function GetTranslation(language As String, s As String)
GetTranslation = s ' default to original text if no translation is available
On Error Resume Next
GetTranslation = translations(language + ":" + s)
End Function
好的,我明白了。這對我的Excel加載項來說不會有問題。但我有一個幾乎相同的Word插件。我怎樣才能包含Word插件的Excel表單? – BetaRide
我對Word Addins一無所知,所以不知道最好的解決方案 - 也許你將不得不復制Word表格中的信息? –