Excel 对于范围内的每个单元格,是否无法将其带到另一个子单元格?
对范围内的每个单元格使用时,我希望使用cell.row属性来引用当前单元格的行。但是,如果我在另一个子系统中使用它,我会得到错误运行时错误:需要'424'对象 下面是一个简单的代码来说明我的意思。我是否做错了什么,或者是否有方法引用另一个子单元中当前单元格的行?谢谢Excel 对于范围内的每个单元格,是否无法将其带到另一个子单元格?,excel,vba,Excel,Vba,对范围内的每个单元格使用时,我希望使用cell.row属性来引用当前单元格的行。但是,如果我在另一个子系统中使用它,我会得到错误运行时错误:需要'424'对象 下面是一个简单的代码来说明我的意思。我是否做错了什么,或者是否有方法引用另一个子单元中当前单元格的行?谢谢 Sub CommandButton2_Click() Dim rng As Range Set rng = Range("P290:P293") For Each cell In rng Third Next cel
Sub CommandButton2_Click()
Dim rng As Range
Set rng = Range("P290:P293")
For Each cell In rng
Third
Next cell
End Sub
Sub Third()
MsgBox cell.row
End Sub
您需要将其作为参数传递。或者使用
公共单元格作为范围来生成单元格
全局变量
@Vasily确实可以-但是在循环中,您必须在每次迭代中设置该引用,这意味着更大的开销。对于不循环的代码,使用公共范围的变量会更容易。我不这么认为,我认为excel95的时代已经过去了,所以用户自己应该使用什么。我的评论只是为了增加额外的选择+我的side@Vasily我对你说的任何话都没有异议——这是一个完全可行的选择。从编程的角度来看,我个人通常会避免在循环的每次迭代中设置对象的实例。在本例中,这很好,但并非每次有人遇到这个问题时都是这样。我说的是一般性的,而不仅仅是VBA和Excel。你对休说的完全正确,就一般方法而言。。。同意您的说法您在两个过程中都没有声明单元格
,因此除了隐式声明变量
类型外,它们还仅在过程级别上起作用,这意味着即使两个过程共享名称单元格
,这两个不同的单元格
也是两件不同的事情。在Third
过程中,cell
是一个未定义的变量,是一个空的/nothing/null字符串,它没有.row
属性。正确的作用域、传递变量以及最重要的声明变量将帮助您避免这些错误。谢谢!抱歉,这是我第一次编写宏>。
Sub CommandButton2_Click()
Dim rng As Range, cell As Range
Set rng = Range("P290:P293")
For Each cell In rng
Third cell
Next cell
End Sub
Sub Third(cell As Range)
MsgBox cell.row
End Sub