Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Arrays VBA中单行上多个数组的声明_Arrays_Vba - Fatal编程技术网

Arrays VBA中单行上多个数组的声明

Arrays VBA中单行上多个数组的声明,arrays,vba,Arrays,Vba,我浪费了两个小时的时间来声明一个数组。我现在知道如何避免这个问题,但我想知道这里出了什么问题。我又是VBA的新手,我想了解我在做什么,而不是只是做随机编辑,直到它工作。。。这就是我在这里做的 第一个代码是: Public Sub Main() Dim X(3) As Double Dim V(3) As Double Call SimpleFunc(X) Debug.Print "Finished!" End Sub Private Sub Func1(ByRe

我浪费了两个小时的时间来声明一个数组。我现在知道如何避免这个问题,但我想知道这里出了什么问题。我又是VBA的新手,我想了解我在做什么,而不是只是做随机编辑,直到它工作。。。这就是我在这里做的

第一个代码是:

Public Sub Main()
    Dim X(3) As Double
    Dim V(3) As Double
    Call SimpleFunc(X)
    Debug.Print "Finished!"
End Sub

Private Sub Func1(ByRef X() As Double)
    X(1) = 0.1
    X(2) = 0.2
    X(3) = 0.3
End Sub
但第二段代码没有(编译时出错“类型不匹配:应为数组或用户定义类型”)。唯一的区别在于X和V的声明

Public Sub Main()
    Dim X(3), V(3) As Double
    Call SimpleFunc(X)
    Debug.Print "Finished!"
End Sub

Private Sub Func1(ByRef X() As Double)
    X(1) = 0.1
    X(2) = 0.2
    X(3) = 0.3
End Sub
为什么X在后面的代码中不是数组


谢谢大家

您必须同时指定这两种类型,从逻辑上讲,我以前认为它可以像您现有的那样工作,但事实并非如此

这样做:

Dim X(3) As Double, V(3) As Double
但好处是您不必对类型进行分组,您可以有如下功能:

Dim X as long, Y as Double, V as Variant, Z(3) as String

全部在一行上

简而言之,如果坚持在一行上声明倍数,则需要为每个变量指定数据类型:

Dim X(3) As Double, V(3) As Double
如果未指定数据类型,VBA将假定该类型为
Variant
变体
可以是一个
数组
,但不应使用数组表示法:

Dim V(3) As Double
Dim X

X = V ' X is now an array

哦,一个变种。。。但它是否仅适用于阵列?因为我在MicrosoftVisualBasic页面上发现了这一点:>>将a、b、c作为单体,将x、y作为双体,将I作为整数>'a、b和c都是单体;x和y都是双重的@Godzy:我想你是。这些例子可能是针对.NET的。你在检查MS站点时必须小心,否则很容易就会发送错误的文档。。。