VBA-创建要重定向的对象";写下;方法
现在我有一个模块,我用“write”方法调用一个对象 我在代码中大约500个地方这样做,现在我需要支持2个对象,而不是仅支持1个对象-但我将根据变量状态只对其中一个对象进行写入 所以本来我要写VBA-创建要重定向的对象";写下;方法,vba,class,object,write,Vba,Class,Object,Write,现在我有一个模块,我用“write”方法调用一个对象 我在代码中大约500个地方这样做,现在我需要支持2个对象,而不是仅支持1个对象-但我将根据变量状态只对其中一个对象进行写入 所以本来我要写 If var = 1 Then Module1.Obj1.Write("some_data") Else If var = 0 Then Module1.Obj2.Write("some_other_data") End If 如何创建一个可以基于变量重定向数
If var = 1 Then
Module1.Obj1.Write("some_data")
Else If var = 0 Then
Module1.Obj2.Write("some_other_data")
End If
如何创建一个可以基于变量重定向数据的对象,以便像这样编写:
Module1.ObjX.Write("data_here")
在ObjX中向下读取“var”,如果var=1,则写入Obj1;如果var=0,则写入Obj2
'if var = 1 then
Module1.Obj1.Write("data")
else if var = 0 then
Module1.Obj2.Write("data")
这将使代码更容易理解并节省大量工作:S通过引用将对象传递到写入函数中:
子写入数据(ByRef obj,ByVal数据)
'在此处使用对象写入数据
端接头
写入数据(Obj1,“数据”)
写入数据(Obj2,“数据”)
通过引用将对象传递到写入函数:
子写入数据(ByRef obj,ByVal数据)
'在此处使用对象写入数据
端接头
写入数据(Obj1,“数据”)
写入数据(Obj2,“数据”)
一种标准的方法是创建键值对字典。键是选择需要使用哪个对象写入的值,与键关联的值是要使用的对象。下面的代码使用scripting.dictionary来实现这一点
在模块级
Public myWriter as Scripting.Dictionary
在初始化子程序中
Set myWriter = New Scripting.Dictionary
with myWriter
.Add 1,Obj1
.Add 0.Obj2
.Add 3.Obj3
' etc
End With
要调用适当的write函数,现在只需使用
myWriter.Item(var).Write(DataValue)
“一种标准的方法是创建一个键值对字典。键是选择需要使用哪个对象写入的值,与键关联的值是要使用的对象。下面的代码使用scripting.dictionary来实现这一点 在模块级
Public myWriter as Scripting.Dictionary
在初始化子程序中
Set myWriter = New Scripting.Dictionary
with myWriter
.Add 1,Obj1
.Add 0.Obj2
.Add 3.Obj3
' etc
End With
要调用适当的write函数,现在只需使用
myWriter.Item(var).Write(DataValue)
“在调用write对象之前更改writevar的值 由于writervar是全局的,因此可以在代码中的任何位置编辑该值
Public writervar as Integer ' global scope
Public Sub WriteObj(Data)
Select Case writervar
Case 0
' do stuff
Case 1
' do stuff
Case Else
' error
End Select
End Sub
在调用write对象之前更改writervar的值 由于writervar是全局的,因此可以在代码中的任何位置编辑该值
Public writervar as Integer ' global scope
Public Sub WriteObj(Data)
Select Case writervar
Case 0
' do stuff
Case 1
' do stuff
Case Else
' error
End Select
End Sub
在模块中创建函数
ObjWrite()
,并调用该函数;在函数内部,决定要做什么。var
是全局函数吗?@NickSlash是,在模块中创建函数ObjWrite()
,并调用该函数;在函数内部决定要做什么。var
是全局的吗?@NickSlash是,