【发布时间】:2017-01-18 10:25:21
【问题描述】:
我在一些单元格中循环,在垂直选择中,在 Excel 中,然后将该单元格作为参数传递给过程。
我已经这样做了,所以我没有两次ProcessCells的内容,在代码中,一次用于while循环,第二次用于For循环。
如果我尝试在 for 循环中写出单元格的值,它会起作用。 如果我将 ProcessCells 过程的内容放在 for 循环中,它也可以工作。
但如果我尝试将其作为参数传递到 ProcessCells 中,则会出现错误
'需要对象'
这里是代码,如果你想看看:
Sub loopThroughCells()
Dim c As Range
Dim autoSelect As String
Dim X, Y As Integer
autoSelect = Cells(3, 2).Value
If StrComp(autoSelect, "Y") = 0 Then
Y = 5
X = 4
While Not IsEmpty(Cells(Y, X).Value)
ProcessCells (Cells(Y, X))
Y = Y + 1
Wend
Else
For Each c In Selection
ProcessCells (c)
Next c
End If
End Sub
Sub ProcessCells(ce As Range)
End Sub
怎么样
细胞(n,m)
不同于
c 在选择中
?
错误发生在 For 循环中,但不会发生在 while 循环中。
【问题讨论】:
-
它可能应该是
For Each c In Selection.Cells(并且你应该尽可能避免使用Select。另外,请参阅这个文档:stackoverflow.com/documentation/vba/7363/… -
谢谢,但遗憾的是这并没有解决问题。
-
您是否更改了
ProcessCells中的单元格?因为您不能在For Each循环中更改元素的值(我知道,这很痛苦……) -
不,即使 ProcessCells 过程为空,我也会遇到同样的错误。