【问题标题】:declare an array in VBA, exception在 VBA 中声明一个数组,异常
【发布时间】:2012-01-11 10:02:02
【问题描述】:

在下面的代码中,VBA 告诉我boundary 必须是Dim vals(1 To boundary) As Variant 行上的常量。这是我第一次看到这个。这里发生了什么?

Dim boundary As Integer
boundary = distrib.Count

Dim vals(1 To boundary) As Variant
For i = 1 To boundary
    vals(i) = distrib(i, 3) + distrib(i, 4)
Next i

distrib 是一个声明为变量的数组

【问题讨论】:

    标签: vba


    【解决方案1】:

    你不能用非常量值声明一个固定大小的数组;相反,您需要将其声明为动态数组(通过省略大小),然后将其重新调整为所需的范围;

    Dim vals() As Variant
    ReDim vals(1 To boundary)
    

    【讨论】:

      【解决方案2】:

      您不能在与声明变量相同的操作中分配数据。改用Redim

      Dim boundary As Long
      boundary = 10
      Dim vals() As Variant
      ReDim vals(1 To boundary)
      

      【讨论】:

        【解决方案3】:

        您最初可以使用变量边界声明一个数组,但是您可以 ReDim 然后为变量:

        Dim boundary As Integer
        boundary = distrib.Count
        
        Dim vals() as Variant
        ReDim vals(1 To boundary)
        For i = 1 To boundary
            vals(i) = distrib(i, 3) + distrib(i, 4)
        Next i
        

        【讨论】:

          猜你喜欢
          • 2020-10-24
          • 1970-01-01
          • 2012-10-19
          • 1970-01-01
          相关资源
          最近更新 更多