&引用;运行时错误13:类型不匹配“;在excel vba中创建图表时

&引用;运行时错误13:类型不匹配“;在excel vba中创建图表时,excel,charts,vba,Excel,Charts,Vba,我想在excel vba中创建一个图表。在类模块的顶部,我声明myChart 这一行: private myChart as chart set myChart = ActiveWorkbook.charts.add 然后,在该类模块内的子例程中,我使用以下行将myChart设置为新图表: private myChart as chart set myChart = ActiveWorkbook.charts.add 在set语句中,我得到以下错误: “运行时错误13:类型不匹配” 这是

我想在excel vba中创建一个图表。在类模块的顶部,我声明myChart 这一行:

private myChart as chart
set myChart = ActiveWorkbook.charts.add
然后,在该类模块内的子例程中,我使用以下行将myChart设置为新图表:

private myChart as chart
set myChart = ActiveWorkbook.charts.add
在set语句中,我得到以下错误:

“运行时错误13:类型不匹配”

这是令人沮丧的,因为这个错误有时不会发生,而且,我能够在不同的类模块中使用相同的语句制作图表

---编辑---

下面是我的课堂模块(名为沙图)。为了每个人的利益,我把它删掉了, 但当然,错误仍然存在:

Option Explicit

Private myChart as Chart
Private chartname as String


Private Sub Class_Initialize()
chartname= "Sand Trends"
End Sub


Private Sub makeCoarseChart()
DisableScreenUpdates
eliminateOld
initChart
EnableScreenUpdates
End Sub


Private sub eliminateOld()
Dim chrt as chart
For Each chrt in charts
    if chrt.name = chartname then
        Application.DisplayAlerts=False
        chrt.Delete
        Application.DisplayAlerts=True
        Exit For
    End if
Next chrt
End Sub


Private Sub initChart()
Set myChart= ActiveWorkbook.charts.add
mychart.name= chartname
mychart.ChartType=xlAreaStacked
End Sub 
在我的主模块中,我有下面一行,这是开始 我的宏的要点:

new SandTrends.makeCoarseChart

感谢您的帮助

我还觉得,您不了解变量声明是如何工作的
myChart
是该子例程中的一个变量。我建议您阅读更多关于变量声明的内容。有什么理由我不应该在类模块中声明图表对象吗?类模块是否仅保留用于声明某些数据类型?如果是这样,那就很奇怪了。再说一次,VBA很奇怪…谢谢你的帮助。根据“局部变量”窗口,发生此错误时,myChart属于Chart类型。所以我不相信它是你所说的变体。为了真正诊断它,我们需要查看更多的代码。问题仍然是:为什么要在类模块中声明myChart?一些关于你正在尝试做什么的额外信息,以及为什么你认为这是最好的方法,可能有助于揭示问题。你的子程序在哪里声明?在普通模块中还是在其他地方?如果它是一个普通模块,则局部变量不会显示为图表类型,除非您在该模块或子例程中重新声明了变量。它将显示为变量,因为您已在类模块中声明了变量。Dim/Private是相同的。你可能想看看