我有一段Excel-VBA代码,其中以下行为逃脱了我的理解
option explicit
....
private sub XYZ()
dim s as string
dim ser as series
dim diagram as chart
...
s = function_returning_string(....)
' Following line throws runtime exception 13
set ser = diagram.seriesCollection.item(s)
....
end sub
如果我尝试在上面列出的seriesCollection
对象的chart
中获取命名项,则会抛出(德语)错误laufzeitfehler'13'typenunverträglich这将是运行时错误13:类型不匹配英文。
将违规行更改为
set ser = diagram.seriesCollection.item(CStr(s))
让错误消失。
我不知道为什么会这样。 CStr()
应该将某些内容(此处为s
)转换为字符串,但s
已经为字符串。
答案 0 :(得分:0)
CStr将变量的类型转换为String数据类型。
如果你有一个函数s = function_returning_string(....)其中s已经输入了一个字符串,例如这样做:
dim s as string
dim sString as string
sString = cstr(s)
没有意义。
在其他情况下,这可能是有用的
有时人们使用它来使用cDate将字符串转换为日期。
或者取字符串,切断一些部分并使用cDbl或cInt转换为Double或Integer数据类型。
如果定义为:
,请检查您的函数“function_returning_string”Public Function function_returning_string() as string
在这种情况下,seriesCollection仅允许在集合中添加String类型变量。