- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 callByName I VBA 动态调用类的不同方法。根据方法的不同,我将拥有不同数量的参数,这些参数将保存在一个数组中。不幸的是 CallByName 接受一个 param 数组,因此传递一个变量数字并不简单。有没有办法解决这个问题,我找到了一个使用类型信息库的解决方案,但这似乎不适用于 VBA,即使我已将其添加为引用。下面是我想要的插图
Public Sub Initialize_Object(ByRef TaskObject, Task_Collection)
Dim Task_begin As Variant, Method_Parameters As Variant
Task_begin = Task_Collection("Method")
CallByName TaskObject, Task_begin, VbMethod, Method_Parameters
最佳答案
您可以通过更改方法签名将 CallByName 与数组一起用作参数:
#If VBA7 Or Win64 Then
Private Declare PtrSafe Function rtcCallByName Lib "VBE7.DLL" ( _
ByVal Object As Object, _
ByVal ProcName As LongPtr, _
ByVal CallType As VbCallType, _
ByRef args() As Any, _
Optional ByVal lcid As Long) As Variant
#Else
Private Declare Function rtcCallByName Lib "VBE6.DLL" ( _
ByVal Object As Object, _
ByVal ProcName As Long, _
ByVal CallType As VbCallType, _
ByRef args() As Any, _
Optional ByVal lcid As Long) As Variant
#End If
Public Function CallByName2(Object As Object, ProcName As String, args() As Variant)
AssignResult CallByName2, rtcCallByName(Object, StrPtr(ProcName), VbMethod, args)
End Function
Private Sub AssignResult(target, result)
If VBA.IsObject(result) Then Set target = result Else target = result
End Sub
Sub UsageExample()
Dim obj As Object, arguments()
Dim obj As New Class1
arguments = Array(1, 3)
CallByName2 obj, "MyMethod", arguments
End Sub
关于arrays - 将参数数组传递给 CallByName VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313575/
我想这样做:“如果有一个模块X包含一个函数Y,则调用它,否则不调用。” 我知道我可以使用 CallByName(Object, MethodName, ...) 来调用对象实例的方法或属性。 是否可以
我正在使用 callByName I VBA 动态调用类的不同方法。根据方法的不同,我将拥有不同数量的参数,这些参数将保存在一个数组中。不幸的是 CallByName 接受一个 param 数组,因此
我目前正在使用 CallByName 来动态调用方法。我每天从服务器的表中获取几种方法以及参数。因此,我将参数数组发送到 CallByName,而不是参数数组,因为直到运行时我才知道参数的数量。鉴于
我一直在特定应用程序中使用 CallByName 并得到我无法解释的结果。它们可以在以下条件下的简单测试中重现 类对象的属性为 Double 类型 添加的值 (Let) 来自已设置为多单元格区域的变体
使用 CallByName 在 classModule 中调用函数很容易 标准模块中的函数怎么样? ''#inside class module ''#classModule name: clsExa
我正在尝试根据包含子例程名称的字符串变量从 Windows 窗体调用公共(public)子例程。子例程是代码模块中的一个过程,直接使用过程名称调用时可以正常工作。 VB.net 函数 CallByNa
我是一名优秀的程序员,十分优秀!