Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将函数的参数作为数组插入_Vba - Fatal编程技术网

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:)。谢谢你的帮助!