Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 在VBA中循环工作表时选择范围_Excel_Vba - Fatal编程技术网

Excel 在VBA中循环工作表时选择范围

Excel 在VBA中循环工作表时选择范围,excel,vba,Excel,Vba,为了回答这个问题,我把代码缩短了一点,但得到的错误是相同的 当尝试在每个工作表上选择A列中包含数据的单元格并对其执行操作时,我在第一个工作表后遇到一个错误: Sub quickSub() Dim sh As Worksheet For Each sh In Worksheets sh.Range("A6", Range("A6").End(xlDown)).Select ''Random bits of code here where I manipulate selection

为了回答这个问题,我把代码缩短了一点,但得到的错误是相同的

当尝试在每个工作表上选择A列中包含数据的单元格并对其执行操作时,我在第一个工作表后遇到一个错误:

Sub quickSub()

Dim sh As Worksheet

For Each sh In Worksheets
    sh.Range("A6", Range("A6").End(xlDown)).Select

''Random bits of code here where I manipulate selection on each worksheet

Next

End Sub
我得到的错误是:

"Run-time error '1004': Method 'Range' of object'_Worksheet' failed.
试试这个:

sh.Activate
sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row).Select
我确保范围参考在右表上结束 我让end down返回最终的行号,并与列字母连接,这可能不需要,但可能会使您更容易调试

更新:

添加了激活行。选择可能需要激活图纸

更新2:

以下是不使用select的“正确”方法 使用此方法直接引用工作表数据,而无需逐个工作表移动。 此最佳实践将提高代码性能

Sub quickSub()

Dim sh As Worksheet

For Each sh In Worksheets
    With sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row)
        '- lines that manipulate the 'selection' in the above with
        .Value = "NewValue"
        .font.bold = true


    End With

''Random bits of code here where I manipulate selection on each worksheet

Next

End Sub
试试这个:

sh.Activate
sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row).Select
我确保范围参考在右表上结束 我让end down返回最终的行号,并与列字母连接,这可能不需要,但可能会使您更容易调试

更新:

添加了激活行。选择可能需要激活图纸

更新2:

以下是不使用select的“正确”方法 使用此方法直接引用工作表数据,而无需逐个工作表移动。 此最佳实践将提高代码性能

Sub quickSub()

Dim sh As Worksheet

For Each sh In Worksheets
    With sh.Range("A6", "A" & sh.Range("A6").End(xlDown).row)
        '- lines that manipulate the 'selection' in the above with
        .Value = "NewValue"
        .font.bold = true


    End With

''Random bits of code here where I manipulate selection on each worksheet

Next

End Sub

谢谢你的回复!当我使用它时,发生了大致相同的事情,除了错误现在是:“运行时错误‘1004’:范围类的Select方法失败”更新的答案。在尝试选择工作表之前,请确保您正在激活该工作表。工作正常!非常感谢你的帮助!欢迎我添加了第二个答案,显示了一种替代的“更好”方式来完成您正在尝试的任务。这可能与一个小例子无关,但在编写大型项目时,这是一个绝对必要的最佳实践,因此最好尽快养成习惯,避免使用
Select
。就可以了!一般来说,我对VBA/编码比较陌生,所以像这样的任何提示都绝对有用。再次感谢!谢谢你的回复!当我使用它时,发生了大致相同的事情,除了错误现在是:“运行时错误‘1004’:范围类的Select方法失败”更新的答案。在尝试选择工作表之前,请确保您正在激活该工作表。工作正常!非常感谢你的帮助!欢迎我添加了第二个答案,显示了一种替代的“更好”方式来完成您正在尝试的任务。这可能与一个小例子无关,但在编写大型项目时,这是一个绝对必要的最佳实践,因此最好尽快养成习惯,避免使用
Select
。就可以了!一般来说,我对VBA/编码比较陌生,所以像这样的任何提示都绝对有用。再次感谢!