将工作表传递给一个过程

我试图将三个工作表传递给一个过程调用

Call pivot_table(Sheets("Sheet2"), Sheets("Sheet3"), Sheets("Sheet4")) 

但是,我得到一个错误的SUBSCRIPT OUT OF RANGE

也如果我试试

 Dim ws, ws1, ws2 As Worksheet Set ws = Sheets("Sheet2") Set ws1 = Sheets("Sheet3") Set ws2 = Sheets("Sheet4") Call pivot_table(ws, ws1, ws2) 

我得到错误作为ByRef arguement type mismatch

我的程序是

 Sub pivot_table(ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet) 

无法find合适的解决scheme。 谢谢您的帮助。

工作簿中是否有名为“工作表2”,“工作表3”和“工作表4”的工作表? 如果没有,这是您的下标超出范围错误的原因。

ByRef参数types不匹配的原因是您的ws,ws1和ws2声明不是将全部三个声明为Worksheets。

VBA不支持这种在一行上的多variables分配。 如果你想在一行上声明,你仍然必须显式声明每个variables的types,即

 Dim ws As Worksheet, ws1 As Worksheet, ws2 As Worksheet 

不带types的声明将创build一个Variantvariables,即ws,ws1:Variant,ws2:Worksheet。