我有两本作业簿。我已经自动化了代码来设置不同的过滤器,然后测量 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
试试这个,你的语法有点不对劲,我认为你引用了错误的工作表。您应该打开 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