也可以(但也許不是最好)將代碼添加到一個模塊編程。由於VBA不支持反射,因此這是語言中唯一的「動態」編碼。這在捏中很有用。
請參見下面的代碼片段。 addCode
sub採用標準模塊的名稱,Type
的名稱以及包含字段定義的數組。
它首先刪除現有的Type
具有相同的名稱,然後添加新的類型定義英寸
Sub TestAdd()
Dim FieldArray()
FieldArray = Array(_
"Firstname As String", _
"Lastname As String", _
"Username As String" _
)
AddCode "Module2", "Fields", FieldArray
End Sub
Sub AddCode(ModuleName As String, TypeName As String, FieldArray())
Dim StartLine As Long, EndLine As Long, StartColumn As Long, EndColumn As Long, _
CodeToInsert As String
StartLine = 1: StartColumn = -1
EndLine = -1: EndColumn = -1
'Find the old type definition and remove it.
With Application.VBE.ActiveVBProject.VBComponents(ModuleName).CodeModule
'Search for the start of the type definition
If .Find("Public Type " & TypeName, StartLine, StartColumn, EndLine, EndColumn, True) Then
EndLine = EndLine + 1: StartColumn = -1: EndLine = -1: EndColumn = -1
'Found the start, now find the end of the type definition
If .Find("End Type", EndLine, StartColumn, EndLine, EndColumn, True) Then
.DeleteLines StartLine, (EndLine - StartLine) + 1
End If
End If
CodeToInsert = _
"Public Type " & TypeName & vbCrLf & _
Join(FieldArray, vbCrLf) & vbCrLf & _
"End Type"
.InsertLines StartLine, CodeToInsert
End With
End Sub
這聽起來有希望! :)你有沒有一個我將如何做到這一點的例子。像一個小的代碼片段或什麼的?編輯:你的意思是使用腳本字典,而不是公共類型? – 2011-03-30 06:25:36
我認爲這是你應該在代碼塊前後使用的:)特別是在註釋中。但在答案中,您可以選擇一個代碼片段,並使用編輯器中的工具欄來格式化整個事物。 – 2011-03-30 08:03:29
未安裝Cripting.RunTime庫的計算機有什麼可能?我可能不得不使用VBA集合。如果這甚至是可能的。 – 2011-03-30 09:02:50