string_variable和CStr(string_variable)之间的区别是什么

时间:2012-09-27 11:23:43

标签: string vba

我有一段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 已经为字符串。

1 个答案:

答案 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类型变量。