如何将VBA代码限制为特定的工作表?

1 excel vba excel-vba

我试图将宏限制为特定的测试!工作表当我激活下面粘贴的宏时,我在测试中!工作表,宏工作.但是,当我尝试在不同的工作表上激活宏时,我收到一个错误.我是否需要修改VBA代码才能使其工作在工作簿中的任何其他工作表?谢谢

Sub Test ()
' Test Macro
'
' Keyboard Shortcut: Ctrl+Shift+B
'
  Range ("Test!B1").Select 
  Selection.ClearContents
  Range ("Test!B2").Select
  Selection.ClearContents
  Range ("Test!B3").Select
  Selection.ClearContents
End Sub
Run Code Online (Sandbox Code Playgroud)

Arc*_*ird 5

您必须直接引用工作表:

Dim ws as worksheet
set ws = Thisworkbook.Worksheets("Test")

with ws
  .Range("B1:B3").ClearContents  
end with
Run Code Online (Sandbox Code Playgroud)

其他注意事项:请勿使用.SelectSelection.只需直接操作对象即可.您的原始代码中存在String问题会导致编译时错误(在我的代码中已修复)您可以在一行代码中清除整个范围,而不是逐个单元格

  • 您应该使用`Worksheets`集合来检索`Worksheet`实例.`Sheets`包含所有工作表类型,包括非工作表工作表(例如`Chart`) - 如果用户重命名"Test"工作表,并添加一个名为"Test"的`Chart`工作表,此代码将抛出一个类型不匹配错误.如果将"测试"表重命名为其他任何内容,则此代码将使*下标超出范围*错误.使用工作表的代号标识符可以获得更强大的解决方案,除非直接删除工作表,否则该解决方案不会中断. (3认同)