我在Excel VBA中写过一段代码,其中有一部分在整个代码中重复了好几次,例如:
sheets("A").range("A1").select
...
sheets("A").range("B2").value
...
sheets("A").range("C1").Copy
...
sheets("A")
我怎样才能在代码开头定义表达式ShA
而不是多次编写它?当然,我使用了下面的方法,但不幸的是它不起作用:
Dim ShA as string
Set ShA = "sheets(""A"")"
...
ShA.range("A1").select
...
ShA.range("B2").value
...
ShA.range("C1").Copy
...
答案1
你不想将它定义为字符串。问题是你试图“别名”一个字符串来扩展,这在 shell 语言中可能有效,但在面向对象的语言中则不行
你需要做的是对象。
您需要创建一个新的字符串,而不是尝试为其添加别名目的这就是您要查看的工作表。
Dim ShA As Worksheet ' define as a worksheet object, not a string
Set ShA = Sheets("A") ' set our new object to point at the worksheet we want
现在您可以ShA.range("A1").select
按预期使用等等。
实际上,您在语法上与需要执行的操作非常接近,只是在尝试让 VBA 扩展字符串而不是创建可以指向您想要简化的内容的对象时犯了一个错误。