工作表和单元格和范围的默认范围是什么?

Cod*_*per 3 excel vba

当您只输入工作表()时,ActiveWorkbook或ThisWorkbook的默认范围是什么?对于那些不了解这些区别的人来说,当您希望在切换到不同的工作簿时运行宏时,它们在Excel 2013中尤为重要.

Tim*_*ams 16

通常在标准模块中,不合格的Worksheets()将引用ActiveWorkbook,除非它在ThisWorkbook模块中,在这种情况下它将引用包含的工作簿.

同样,标准模块中的不合格MeRange()(或Cells()/ Rows())将引用ActiveSheet,但在工作表代码模块中将引用相应的工作表.

Unqualified...       Where              Implicit Qualifier
--------------       --------------     -------------------
Worksheets(),        ThisWorkbook       Containing workbook (Me)
Sheets()             Any other module   Active workbook (via [_Global])

Range(), Cells(),    Sheet module       Containing sheet (Me)
Rows(), Columns(),   Any other module   Active sheet (via [_Global])
Names()
Run Code Online (Sandbox Code Playgroud)

最简单的方式,以避免不必记住任何的这是一直完全限定任何Columns(),Me,WorksheetsSheets参考.

  • 附带说明,[Rubberduck](http://www.github.com/rubberduck-vba/Rubberduck)具有代码检查功能,可以检查项目中所有隐式的“ ActiveSheet”和“ ActiveWorkbook”引用(并提供一个快速修复程序)他们明确)。 (2认同)