我循环浏览一些单元格,在垂直选择中,在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循环中发生。
答案 0 :(得分:3)
您应该如何做到这一点:
Option Explicit
Sub TestMe()
Dim c As Range
For Each c In Selection
Call ProcessCells(c)
Next c
End Sub
Sub ProcessCells(ce As Range)
End Sub
你应该引用call
,因为你在括号中有一个参数。
或者像这样,如果你不喜欢call
:
Option Explicit
Sub TestMe()
Dim c As Range
For Each c In Selection
ProcessCells c
Next c
End Sub
Sub ProcessCells(ce As Range)
End Sub
加上你的代码的小版本。你的声明是这样的:
Dim X as Long, Y As long
在你的代码中,X被声明为变体,整数比较慢且小于long - Why Use Integer Instead of Long?
以下是一个很好的解释,何时将参数放在括号中以及何时使用call
- How do I call a VBA Function into a Sub Procedure