代码之家  ›  专栏  ›  技术社区  ›  Przemyslaw Remin

在VBA中声明数组变量

  •  3
  • Przemyslaw Remin  · 技术社区  · 7 年前

    Dim MyArr1 As Variant
    Dim MyArr2() As Variant
    Dim MyArr3()
    

    这三个变量都是动态的吗?

    我找不到将这三种方法进行比较的文档链接。

    当执行这两个代码时,我真的看不出有什么区别:

    代码1

    Dim MyArr
    MyArr = Range("a1:c10").Value
    

    代码2

    Dim MyArr() As Variant
    MyArr = Range("a1:c10").Value
    

    如果我们用上面列出的三种方法中的任何一种来声明数组,只要我们想给从一个范围读取它们的数组赋值,这真的很重要吗?

    MyArr=Range("A1:C10").Value
    

    Dim MyArr(10,3) As Variant '10 rows, and 3 columns
    

    我也是 MyArr 当我们从一个范围读取数据时,它会变成一个静态数组变量吗?

    3 回复  |  直到 7 年前
        1
  •  3
  •   Santosh    7 年前

    Dim MyArr1 As Variant
    变量类型可以保存任何数据类型或对象

    下面两个是同一个。其动态数组的大小在设计时未知。

    Dim MyArr2() As Variant
    Dim MyArr3()
    

    Sub ArayTest()
    
        Dim MyArr1 As Variant
        Dim MyArr2() As Variant
        Dim MyArr3()
    
        MyArr1 = 10
        MyArr1 = #1/30/2019#
    
        '--> You cannot directly assign value to array
        'MyArr2 = 20
        'MyArr3 = 30
    
        '--> Use Redim to set the size of array
    
        ReDim MyArr2(1)
        MyArr2(0) = "abc"
        MyArr2(1) = 1324
    
        '--> variant can hold object
        MyArr1 = Array(1, "s", #1/30/2019#)
    End Sub
    

    enter image description here

        2
  •  2
  •   Community Mohan Dere    6 年前

    Variant Variant data type :

    Variant数据类型是所有未显式声明为其他类型(使用Dim、Private、Public或Static等语句)的变量的数据类型。

    变量数据类型没有类型声明字符。

    您可以使用变量数据类型代替任何数据类型

    这基本上意味着 Dim MyArr1 As Variant 暗示 MyArr1 也可以是变体数组。

    Array 指“任何事物”,但只有第一个可以是任何事物:)

        3
  •  2
  •   Pᴇʜ    7 年前

    两者的区别

    • Dim MyArr()
      Dim MyArr() As Variant
    • Dim MyArr
      Dim MyArr As Variant (也一样)

    是吗 Dim MyArr() 明确地 数组,并且不能为其赋值: MyArr = 5 将失败。
    虽然 暗迈尔

    • 价值 MyArr=5 (将起作用)
    • 还是数组 MyArr = Range("a1:c10").Value
    • Set MyArr = Range("a1:c10")

    因此,如果您声明了一个变量,请尽可能具体。这意味着如果你想

    MyArr = Range("a1:c10").Value
    

    Dim MyArr()作为变体 这是这里最具体的选择。因此,除了数组之外,没有人可以在其中放入其他内容。你越具体,你的代码就保存得越多。

    而且每个编码人员都能在变量中看到这一点 Dim MyVar() Dim MyVar 他们不知道会发生什么。

    推荐文章