Sub test()
Worksheets("Sheet1").Range("A1").Value = 20
End Sub
Run Code Online (Sandbox Code Playgroud)
这个简单的代码在编译时会出错.
activesheet.工作良好.
我想知道什么导致错误以及如何修复它...
看起来它没有识别床单,工作簿等.
答案取决于你得到的错误.可能有两个问题:
您有多个工作簿,Excel正在查找名为"Sheet1"的工作表的错误工作簿,然后您需要指定工作簿.
Workbooks("my-workbook").Worksheets("Sheet1").Range("A1").Value = 20
Run Code Online (Sandbox Code Playgroud)
或者如果它在运行代码的工作簿中,最好使用它
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = 20
Run Code Online (Sandbox Code Playgroud)
请注意,您应该避免ActiveWorkbook哪个不太可靠.
没有名为的工作表Sheet1.检查您的工作表名称.请注意,指定工作表的方法有很多种.
按编号指定
Worksheets(1).Range("A1")
Run Code Online (Sandbox Code Playgroud)
这使用工作表下方标签栏中工作表的位置.请注意,这不是很可靠,因为可以通过移动标签来轻松更改位置.
按选项卡名称指定
Worksheets("Sheet1").Range("A1")
Run Code Online (Sandbox Code Playgroud)
这可能是最常用的方法.工作表由其选项卡名称指定.这比数字更可靠.
按VBA名称指定
Sheet1.Range("A1")
Run Code Online (Sandbox Code Playgroud)
这里使用了工作表的VBA名称.此名称只能在VB编辑器中更改,并且对用户不可见,并且与选项卡名称无关.使用此选项可确保即使用户更改工作表的选项卡名称,VBA代码仍可在所需的工作表上运行.
因此,如果选项卡名称是Sheet1其VBA名称Sheet5,则它可以3位于选项卡栏中.
使用这个例子......
Worksheets("Sheet1").Range("A1")
Sheet5.Range("A1")
Worksheets(3).Range("A1")
Run Code Online (Sandbox Code Playgroud)
...只是通过不同的名称访问完全相同的工作表.所以最好在这里使用有意义的名字(而不是数字),以免混淆.
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |