Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 对于范围内的每个单元格,是否无法将其带到另一个子单元格?_Excel_Vba - Fatal编程技术网

Excel 对于范围内的每个单元格,是否无法将其带到另一个子单元格?

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

对范围内的每个单元格使用时,我希望使用cell.row属性来引用当前单元格的行。但是,如果我在另一个子系统中使用它,我会得到错误运行时错误:需要'424'对象

下面是一个简单的代码来说明我的意思。我是否做错了什么,或者是否有方法引用另一个子单元中当前单元格的行?谢谢

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