Excel VBA。什么时候需要激活工作表?

标签 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

总是需要做这样的事情吗?
我很确定我已经看到了一些代码,其中对非事件工作表中的单元格进行了更改。

谢谢

最佳答案

除非您希望用户看到某些内容,否则您实际上不需要激活工作表。

由于您的引用,您收到错误,请始终记住包含 SheetWorksheetRanges :

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 中的语句,在这种情况下会有很大帮助

关于Excel VBA。什么时候需要激活工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52893738/

相关文章:

vba - 我的 Outlook VBA 代码丢失了奇怪的电子邮件

c# - 使用图表在 Excel 中创建辅助轴

java - 无法从新上传的 Excel 文件中读取数据

excel - 将文本附加到单元格但卡在循环中

Excel:当其他单元格等于定义的值时删除整行

vba - 如何使用 VBA 在文本文件中的句子(用破折号)下划线

excel - 如何将 vbYes/vbNo 转换为 bool 值?

java - 如何将 xlsx 文件中的数据复制到文本文件

java - 使用 Apache POI 根据 csv 工作表更新 Excel 工作表值

excel - VBA从一个工作簿复制并粘贴到另一个工作簿