我已经简化了我的问题,使其尽可能通用。
假设我想创建一个Sub,它接受一个集合,以及预期包含在该集合中的对象的数据类型,并将指定的参数打印到即时窗口。 sub需要将一个集合(例如ThisWorkbook.Worksheets)作为输入,一个数据类型(例如Worksheet),我认为可选择一个属性(例如Name)
子看起来像:
Sub PrintMembers(ByVal myCol as Collection, ByVal datatype as ????, ByVal property as ????)
dim myObj as datatype?
for each in myCol
debug.print myObj.property?
next
End Sub
然后我可以打电话给:
Call PrintMembers(ThisWorkbook.Worksheets, Worksheet, "Name")
或沿着那些行输出的东西:
Sheet1
Sheet2
Sheet3
答案 0 :(得分:1)
我不确定你在问什么,但似乎你可能正在寻找CallByName()
函数:
Public Sub RunMe()
PrintMembers ThisWorkbook.Worksheets, "Name"
End Sub
Private Sub PrintMembers(col As Object, prop As String)
Dim item As Object
For Each item In col
Debug.Print CallByName(item, prop, VbGet)
Next
End Sub