excel - Excel VBA。什么时候需要激活工作表?
问题描述
一般答案将是完美的,b 我有这个简单的代码,只有在运行宏时 Sheet2 处于活动状态时才有效。
否则,它会给出“由应用程序或对象定义”的错误:
Sub PasteArray()
Dim arr(1 To 3) As Variant
Dim n As Integer
Dim ws As Worksheet
arr(1) = 4
arr(2) = 6
arr(3) = 8
n = UBound(arr) - LBound(arr) + 1
Sheets("Sheet2").Range(Cells(1, 1), Cells(n, 1)) = WorksheetFunction.Transpose(arr)
End Sub
如果我先激活工作表,它会起作用,但这需要我保存当前活动工作表才能在最后返回。
Sub PasteArray()
Dim arr(1 To 3) As Variant
Dim n As Integer
Dim ws As Worksheet
arr(1) = 4
arr(2) = 6
arr(3) = 8
n = UBound(arr) - LBound(arr) + 1
Set ws = ActiveSheet
Worksheets("sheet2").Activate
Range(Cells(1, 1), Cells(n, 1)) = WorksheetFunction.Transpose(arr)
ws.Activate
总是需要做这样的事情吗?我很确定我已经看到了一些代码,其中对非活动工作表中的单元格进行了更改。
谢谢
解决方案
除非您希望用户看到某些内容,否则您实际上不需要激活工作表。
由于您的引用,您收到错误,请始终记住包含Sheet
or Worksheet
with Ranges
:
Sub PasteArray()
Dim arr(1 To 3) As Variant
Dim n As Integer
Dim ws As Worksheet
arr(1) = 4
arr(2) = 6
arr(3) = 8
n = UBound(arr) - LBound(arr) + 1
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 1), Sheets("Sheet2").Cells(n, 1)) = WorksheetFunction.Transpose(arr)
End Sub
在零件Sheets("Sheets2")
之前添加Cells
老实说,建议使用谷歌搜索如何With
在 VBA 中使用语句,这在这种情况下会有所帮助
推荐阅读
- javascript - SyntaxError:使用管道 yml 部署 Laravel/Vue 项目时 Yarn Run 出现意外令牌
- python - 导入 Numpy 的问题我删除了 numpy 但是当我尝试运行程序时它说我还有
- java - 生成具有特定要求的随机字符串
- python - 使用命令行用另一个参数覆盖默认参数
- elasticsearch - 使用正则表达式将文件节拍到 elk
- kubernetes - 部署阶段出错:“lchmod(文件属性)错误:不支持”
- draftjs - TypeError:editorState.getCurrentContent 不是函数
- mockito - 如何使用 mockito 测试 microprofile RestClientBuilder?
- r - 当您无法将用于生成对象的代码添加到 R Markdown 时该怎么办
- python - 在 dcc.Graph 中使用 extendData 的正确方法是什么?