VBA-创建要重定向的对象";写下;方法

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 如何创建一个可以基于变量重定向数

现在我有一个模块,我用“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
如何创建一个可以基于变量重定向数据的对象,以便像这样编写:

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是,