将图表工作表设置为工作表变量

时间:2015-01-29 16:16:39

标签: excel vba excel-vba

我的代码停在以下行:

Dim wks As Worksheet
Set wks = ThisWorkbook.Sheets(vSheets(i, 1))

错误:

Run-time error 13, type mismatch

然而,在这一行我可以输入:

? ThisWorkbook.Sheets(vSheets(i, 1)).Name

进入即时窗口并获得结果

Cashf

很明显,工作表是基于名称vSheets(i,1)找到的。为什么我不能将其设置为工作表? Cashf是作为工作表创建的图表。那些是与工作表不同的对象类型吗?

2 个答案:

答案 0 :(得分:3)

表格是工作表和图表的集合。图表和工作表是不同类型的对象。您应该将wrk定义为变体。

以下示例打印工作簿中的所有工作表名称及其类型

Dim s As Variant
For Each s In ThisWorkbook.Sheets
    Debug.Print s.Name, TypeName(s)
Next

答案 1 :(得分:-1)

尝试使用ThisWorkbook.Worksheets而不是ThisWorkbook.Sheets [如果您需要将变量作为工作表。]

如果没有,请尝试声明类型或将其声明为变体。

Public Sub main()

Dim ws

Set ws = ThisWorkbook.Sheets(1)
Debug.Print ws.Name, ws.Type

Set ws = ThisWorkbook.Sheets(2)
Debug.Print ws.Name, ws.Type

End Sub