多个变量到单维数组vba

时间:2017-09-22 17:08:42

标签: arrays vba excel-vba solidworks excel

我无法弄清楚如何在VBA中将多个坐标放入单维数组中以便稍后使用。这是我将值添加到坐标数组的代码部分。我无法弄清楚如何将x,y,z数据添加到单维数组中。我尝试了不同的方法,但是不能将多个值显示为字符串。

此代码的目标是使用坐标数据通过传递坐标数组来提供给另一个函数。在这段代码中,我从草图中获取坐标数据,其中vLines函数将6,7,8作为x,y,z数据。我想在CoordinatesArray中保存所有这些x,y,z数据,稍后我将访问它。我真的应该为xyz数据或字符串使用另一个数组吗?什么是一个很好的访问方法,或者我应该制作一个带坐标编号的4D数组以及后面的三个位置?

我希望坐标数组为

坐标(1)= x1,y1,z1

坐标(2)= x2,y2,z2

coordinate(n)= xn,yn,zn

For i = 0 To NumLines - 1
        coordx1 = (vLines(12 * i + 6))
        coordy1 = (vLines(12 * i + 7))
        coordz1 = (vLines(12 * i + 8))
        CoordinatesArray(i) = coordx1 & "" & coordy1
        'CoordinatesArray(i) = CStr(coordx1) & CStr(coordy1) & CStr(coordz1)
        Debug.Print "Coordinate Array = "; CoordinatesArray(i)
        Debug.Print "  Line(" & i & ")"
        Debug.Print "    Start = (" & vLines(12 * i + 6) * 1000# & "," & vLines(12 * i + 7) * 1000# & "," & vLines(12 * i + 8) * 1000# & ") mm"
        Debug.Print "    End   = (" & vLines(12 * i + 9) * 1000# & "," & vLines(12 * i + 10) * 1000# & "," & vLines(12 * i + 11) * 1000# & ") mm"
    Next i

1 个答案:

答案 0 :(得分:2)

作为“锯齿状数组”(数组数组)

For i = 0 To NumLines - 1
        coordx1 = (vLines(12 * i + 6))
        coordy1 = (vLines(12 * i + 7))
        coordz1 = (vLines(12 * i + 8))

        CoordinatesArray(i) = Array(coordx1, coordy1, coordz1)
Next i

访问:

Debug.Print CoordinatesArray(5)(0) 'x
Debug.Print CoordinatesArray(5)(1) 'y
Debug.Print CoordinatesArray(5)(2) 'z

作为二维数组

Redim CoordinatesArray(1 to NumLines, 1 to 3) 

For i = 0 To NumLines - 1
        coordx1 = (vLines(12 * i + 6))
        coordy1 = (vLines(12 * i + 7))
        coordz1 = (vLines(12 * i + 8))

        CoordinatesArray(i, 1) = coordx1
        CoordinatesArray(i, 2) = coordy1
        CoordinatesArray(i, 3) = coordz1
Next i

访问:

Debug.Print CoordinatesArray(5, 1) 'x
Debug.Print CoordinatesArray(5, 2) 'y
Debug.Print CoordinatesArray(5, 3) 'z

或者您可以使用字段x,y和z创建自定义类型或类,并创建一个数组。