我有以下两个数组:
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表示,这些项目无法比较。关于我应该如何运作的任何想法?
答案 0 :(得分:1)
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