我有两本工作簿。我自动将代码设置为设置不同的过滤器,然后测量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 =小计。我该如何解决这个问题?
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 wich works fine via:
x= wb2sh.Application.WorksheetFunction.Subtotal(3,Range("A1:A100"))
wb1sh.Range("A1")=x
End Sub
答案 0 :(得分: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