将图表工作表variables设置

我的代码停在下面一行:

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

与错误:

 Run-time error 13, type mismatch 

但是,在这条线上,我可以input:

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

进入即时窗口并得到结果

 Cashf 

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

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

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

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

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

如果不是,请不要声明该types或将其声明为Variant。

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 

结束小组