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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Excel 为循环VBA中的数组赋值_Excel_Vba - Fatal编程技术网

Excel 为循环VBA中的数组赋值

Excel 为循环VBA中的数组赋值,excel,vba,Excel,Vba,请任何人检查代码,我在评论中解释了代码 我正在运行错误13 我担心我正在使用的赋值方法。我想在数组的起始位置0处指定单元格值 非常感谢 Sub zones() Dim Top10zones(0 To 9) As Long Dim found As Boolean Top10zones(0) = 309101502 NumRows = Range("A1", Range("A1").End(xlDown)).Rows.count Dim Arry As Variant Dim count

请任何人检查代码,我在评论中解释了代码

我正在运行错误13

我担心我正在使用的赋值方法。我想在数组的起始位置0处指定单元格值

非常感谢

Sub zones()

Dim Top10zones(0 To 9) As Long
Dim found As Boolean

Top10zones(0) = 309101502

NumRows = Range("A1", Range("A1").End(xlDown)).Rows.count

Dim Arry As Variant

Dim count As Integer
count = 0

' find the 10zones in row 1.
Range("A1").Select
    Do Until IsEmpty(ActiveCell)
         If ActiveCell.Value = Top10zones(0) Then
            found = True
            Exit Do
         End If

         ActiveCell.Offset(0, 1).Select
      Loop
   ' if found move to row 2 in the same cloumn.
      If found = True Then
      ActiveCell.Offset(1, 0).Select

      For j = 2 To NumRows
      If ActiveCell.Value <= 1 Then
         ' if the value <= 1 assign cells(j,1) to the array.
        Arry(count) = Cells(j, 1).Value
        count = count + 1
      End If
      ActiveCell.Offset(1, 0).Select

      ' repeat the process.
      Next j


      End If

End Sub
子区域()
将顶部10个区域(0到9)调暗为等长
Dim被发现为布尔值
前10个区域(0)=309101502
NumRows=Range(“A1”,Range(“A1”).End(xlDown)).Rows.count
作为变体的Dim Arry
将计数设置为整数
计数=0
'在第1行中找到10个区域。
范围(“A1”)。选择
直到IsEmpty(ActiveCell)为止
如果ActiveCell.Value=Top10zones(0),则
找到=真
退出Do
如果结束
ActiveCell.Offset(0,1)。选择
环
'如果找到,则移动到同一克隆中的第2行。
如果find=True,则
ActiveCell.Offset(1,0)。选择
对于j=2到NumRows

如果VBA中的ActiveCell.Value,则数组将以固定长度初始化。例如,长度为1的数组只有
数组(0)
索引,而没有其他索引。如果要增加数组的大小(而不破坏数组的当前内容),则需要使用
ReDim Preserve Arry(新长度)
。因此,如果您
ReDim Preserve Arry(10)
您的数组现在可以容纳10个元素,并且如果您的数组中已有任何元素,它们将被保留

有两种方法可以初始化数组

(一)

Dim myArry(0到1)作为字符串
这是一个包含两个空元素的数组,可以接受字符串

(二)

Dim myArry作为变体
myArry=数组(“,”)
这是一个包含两个“空”元素的数组,准备接受字符串

要更改长度,请执行以下操作:

用于i=1到10
雷迪姆保留我的婚姻(一)
myArry(i)=“随便什么
接下来我

旁注:请参阅。为了节省时间,请告诉我们哪些行错误。
Arry
不是一个神奇的数组,因此
Arry(count)=单元格(j,1)。值
有问题。也不要使用循环查找,请使用
Range.find
.a)在使用
Cells
方法时使用工作表限定符。b) 我没有看到你在任何地方测量你的阵列?@sjr很好,大约1点,对我来说那是一大早。关于你的第二点,我只是想说明它是一个空变量,然后变成一个数组。