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

Set a chart sheet to a worksheet variable

我的代码停在以下行:

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

错误:

Run-time error 13, type mismatch

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

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

进入立即数window并得到结果

Cashf

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

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

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

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

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

如果不是,请尝试声明类型或将其声明为 Variant。

Public 子主()

Dim ws

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

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

结束子