Vba 将函数的参数作为数组插入
我有以下两个阵列:Vba 将函数的参数作为数组插入,vba,Vba,我有以下两个阵列: Sub ArrayLoop(array1, array2) Dim Students() As Variant Set myDocument = ActivePresentation.Slides(1) ENG1 = Array(423.5482, 425.6641, 425.6641) ENG2 = Array(224.0202, 222.5737, 222.5737) GER1 = Array(454.692, 454.0753, 454.0753)
Sub ArrayLoop(array1, array2)
Dim Students() As Variant
Set myDocument = ActivePresentation.Slides(1)
ENG1 = Array(423.5482, 425.6641, 425.6641)
ENG2 = Array(224.0202, 222.5737, 222.5737)
GER1 = Array(454.692, 454.0753, 454.0753)
GER2 = Array(220.8373, 222.2446, 224.3517)
For i = 0 To 40
x1 = parameter1(i)
x2 = parameter2(i)
y1 = parameter1(i + 1)
y2 = parameter2(i + 1)
With myDocument.Shapes.AddLine(BeginX:=x1, BeginY:=x2, EndX:=y1, EndY:=y2).Line
.DashStyle = msoLineDashDotDot
.ForeColor.RGB = RGB(50, 0, 128)
End With
Next i
End Sub
我现在主要想做的是使用两个参数启动宏“ArrayLoop”,然后应该使用该数组。S0
ArrayLoop(ENG1, ENG2)
应与阵列的ENG1和ENG2配合使用
但是当我这么做的时候
Call ArrayLoop(ENG1, ENG2)
我得到一个错误13,上面说,这些项目是不可比较的。关于如何使其工作,您有什么想法吗?
ENG1
和ENG2
需要作为参数传递给sub。在您的代码中,它们被定义为局部变量。当使用参数调用例程时,这些参数需要在别处定义并传递给例程
Sub ArrayLoop(array1, array2)
Dim i As Long
For i = LBound(array1) To UBound(array1) - 1
With ActivePresentation.Slides(1).Shapes.AddLine(BeginX:=array1(i), BeginY:=array2(i), EndX:=array1(i + 1), EndY:=array2(i + 1)).Line
.DashStyle = msoLineDashDotDot
.ForeColor.RGB = RGB(50, 0, 128)
End With
Next
End Sub
下面是定义参数和调用例程的方法:
Sub TestArrayLoop()
Dim ENG1, ENG2, GER1, GER2
ENG1 = Array(423.5482, 425.6641, 425.6641)
ENG2 = Array(224.0202, 222.5737, 222.5737)
GER1 = Array(454.692, 454.0753, 454.0753)
GER2 = Array(220.8373, 222.2446, 224.3517)
ArrayLoop ENG1, ENG2 ' <----- invoke the routine and pass it the parameters
End Sub
Sub-TestArrayLoop()
Dim ENG1、ENG2、GER1、GER2
ENG1=阵列(423.5482425.6641425.6641)
ENG2=阵列(224.020222.5737222.5737)
GER1=数组(454.692454.0753454.0753)
GER2=数组(220.8373222.2446224.3517)
ArrayLop ENG1,ENG2'Hm,这给了我一个下标在这一行是够不着的错误:使用ActivePresentation.Slides(1).Shapes.AddLine(BeginX:=array1(i),BeginY:=array2(i),EndX:=array1(i+1),EndY:=array2(i+1))。行。。有什么想法吗?别担心,这个循环会变成40:)。谢谢你的帮助!