0

次の動作が理解できない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

上記のようにオブジェクトの名前付きアイテムを取得しようとすると、(ドイツ語の) エラーseriesCollectionlaufzeitfehler ' 13' typen unverträglichがスローされますchart

問題のある行をに変更する

set ser = diagram.seriesCollection.item(CStr(s))

エラーがなくなります。

それがなぜなのか、私にはわかりません。CStr()何か (ここでは: s) を文字列に変換することになっていますが、s既に文字列になっています。

4

1 に答える 1

0

CStrは、変数の型を文字列データ型に変換します。

関数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では、文字列型変数のみをコレクションに追加できます。

于 2012-09-27T12:37:12.653 に答える