当我尝试使用FullSeriesCollection方法获取或设置图表的各种属性时,我遇到了一个奇怪的小问题。我可以通过索引或系列名称访问它们,但是当我尝试使用存储在变量中的名称时,我得到一个运行时错误13(类型不匹配)。例如:
Dim trendname As String 'I've also tried Variant, but it still gives me error 13
trendname = "Average" 'when the name is used directly as below
Debug.Print Charts(1).FullSeriesCollection(1).Formula 'This works
Debug.Print Charts(1).FullSeriesCollection("Average").Formula 'This works
Debug.Print Charts(1).FullSeriesCollection.Item("Average").Formula 'This works
Debug.Print Charts(1).FullSeriesCollection(trendname).Formula 'This gives runtime error 13
Debug.Print Charts(1).FullSeriesCollection.Item(trendname).Formula 'This gives runtime error 13
Debug.Print Charts(1).FullSeriesCollection("" & trendname).Formula '...but this works fine!
Debug.Print Charts(1).FullSeriesCollection.Item("" & trendname).Formula 'This works too
有没有办法可以让它单独引用trendname,而不是需要将变量与空字符串连接起来?是否有一个不同的变量类型我应该将trendname声明为,而不是Variant或String? 虽然连接方法确实有效,但它看起来相当愚蠢,而且我很好奇它为什么只使用变量本身不起作用。
答案 0 :(得分:1)
您可能已经知道,Index参数必须是Variant。因此,即使您将变量声明为Variant,一旦为其分配了一个字符串,它就会被识别为字符串。因此,您必须使用类型转换函数CVar ...
将索引强制转换为VariantDebug.Print Charts(1).FullSeriesCollection(CVar(trendname)).Formula
or
Debug.Print Charts(1).FullSeriesCollection.Item(CVar(trendname)).Formula