vba 存储要从非活动窗口粘贴的值

问题描述 投票:0回答:1

我有两本作业簿。我已经自动化了代码来设置不同的过滤器,然后测量 wb2 中的小计,然后将该值粘贴到 wb1 中的 8x11 表中,但是在我使用时需要很长时间。

Windows("wb2name").Activate
Sheets("sheet2").Select
 ' do the filtering and copy subtotal value
 Windows("wb1name").Activate
 Sheets("sheet1").Range("A1").Paste 

我知道最好尝试不使用

Activate
Select
所以我想如果我执行下面的代码,它会更快地运行。问题是它没有正确存储 x=subtotal。我该如何解决这个问题?

Dim wb1 As Workbook
Dim wb1sh As Worksheet

Set wb1 = ActiveWorkbook
Set wk1sh = wb1.Sheets("sheet1")
Set wb2 = "data file.xlsx"
Set wk2sh = wb1.Sheets("sheet1")

'Then I do the filter selecting which works fine via:

x= wb2sh.Application.WorksheetFunction.Subtotal(3,Range("A1:A100")) 

wb1sh.Range("A1")=x

End Sub
vba excel
1个回答
1
投票

试试这个,你的语法有点不对劲,我认为你引用了错误的工作表。您应该打开 Option Explicit,这会提醒您错误的变量名称。

Dim wb1 As Workbook, wb2 as workbook
Dim wk1sh As Worksheet, wk2sh as worksheet, x

Set wb1 = ActiveWorkbook
Set wk1sh = wb1.Sheets("sheet1")
Set wb2 = workbooks("data file.xlsx")
Set wk2sh = wb2.Sheets("sheet1")

'Then I do the filter selecting wich works fine via:

x= Application.WorksheetFunction.Subtotal(3,wk2sh.Range("A1:A100")) 

wk1sh.Range("A1")=x

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.