我试图将三个工作表传递给过程调用
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)
无法找到合适的解决方案。 谢谢你的帮助。
答案 0 :(得分:2)
工作簿中是否有名为“Sheet2”,“Sheet3”和“Sheet4”的工作表?如果不是,这就是您的下标超出范围错误的原因。
ByRef参数类型不匹配的原因是你的ws,ws1和ws2声明没有将所有三个声明为工作表。
VBA不支持在一行上使用这种多变量赋值。如果要在一行上声明,仍然必须明确声明每个变量的类型,即
Dim ws As Worksheet, ws1 As Worksheet, ws2 As Worksheet
声明没有类型会创建一个Variant变量,即ws,ws1:Variant,ws2:Worksheet。