use*_*067 5 variables excel foreach vba excel-vba
您好我是VBA的新手,我正在尝试迭代我已经创建的集合并为每个值执行操作.
这是我的代码:
Sub makeRowsMatch()
Dim rows As VBA.Collection
Set rows = New VBA.Collection
Dim i As Integer
Dim j As Integer
Dim y As Integer
For i = 2 To 22203
For j = 2 To 121
If Cells(i, 2).Value <> Cells(j, 38) Then
rows.Add (i)
End If
Next j
Next i
For Each y As Object in rows
rows(y).Delete
Next y
End Sub
Run Code Online (Sandbox Code Playgroud)
我继续收到错误:
For Each y As Object in rows
Run Code Online (Sandbox Code Playgroud)
它一直亮黄色,但当我删除上面的行时会出现以下错误:
For Each control variable must be Variant or Object
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么不让我迭代价值观吗?声明变量的整个问题对我来说都是新的.谢谢!
声明y
为Variant
,即:
Dim y As Variant
Run Code Online (Sandbox Code Playgroud)
并像这样改变你的循环:
For Each y In rows
Run Code Online (Sandbox Code Playgroud)
然后循环将起作用,或者至少,它不会在那时给你一个错误.
但是下一个问题/错误是在循环内部.这一行:
rows(y).Delete
Run Code Online (Sandbox Code Playgroud)
会给你一个错误"需要对象",或类似的东西,因为rows(y)
返回一个整数,所以你不能调用Delete
它.这里有一些混乱,因为rows
它本身意味着Rows
活动表的范围.但是你也将你的收藏命名为rows
,因此存在命名冲突.
rows
例如,重命名为,myrows
然后它应该全部工作.但是,我不知道你要对这Delete
条线做什么,所以我不能进一步建议.
归档时间: |
|
查看次数: |
14726 次 |
最近记录: |