先日は大変お世話になりました。
追記でもう一つ質問があるのですが、ご存知の方がいらっしゃいましたら
ご教授お願いします。
Collectionオブジェクトを使用してい値の修正を行っているのですが、
Mstcol.Item (i) & "." & collum = 修正値
上記のように記述していますがcollumの部分は可変で呼び出し元からの
引き数で項目名を取得していますが、この書き方だとエラーが出てしまいます。
Collectionオブジェクトとはこういった使い方はできないのでしょうか?
よろしくお願い致します
代入式の左辺の内容を、見直してみてください。
> Mstcol.Item (i) & "." & collum = 修正値
この場合、イコールの左辺は 「変数」や「プロパティ」ではなく、
文字列を連結した「式」になっています。
たとえば、数値型の変数に対して、
A = 123
と書く事はできますが、左辺を式にして
A + 10 = 123
などと書く事はできませんよね。それと同じ事です。
もし、左辺が「プロパティ」ならば、
Mstcol.Item(i) = "abc"
のように、代入式の左辺に持ってくることが可能です。
しかし、Itemが「メソッド」だった場合は、上記のようには書けません。
VB6を例にすると、
CollectionオブジェクトのItemメンバ → メソッド
DictionaryオブジェクトのItemメンバ → プロパティ
DictionaryオブジェクトのItemsメンバ → メソッド
といった感じですね。
ボクはこの手の事はオブジェクトブラウザで確認してますねぇ。
プロパティでも読み取り専用のものもありますし。コードを
選択して右クリックメニューから[定義]へ移動(ショート
カットは[Shift] + [F2])Function や Sub と書かれて
いればメソッド。Property と書かれているとプロパティ。
(他には Class, Module, Enum, Const, Type など)
アイコンも違います。…ただ…それで行くと Collection.Count
ってメソッドなんですよね。…ヘルプじゃプロパティなのに。
…まぁ、値の取得のみ可能とは書いてあるんですが。
…その辺は VB 特有のいい加減さという事でw。
余計なお世話で先手を打っておきますが、Dictionary オブ
ジェクトは Microsoft Scripting Runtime を参照しない
とオブジェクトライブラリに出てきませんのであしからず。
魔界の仮面弁士さん、昨日に引き続き教えていただきありがとうございました。
やはり出来ないのですね。可変の部分はSelect case文を使ってcollumが
○○なら〜といった具合にケース分けして対処することにしました。
そのせいでソースがかなり冗長になりましたが・・・・
ありがとうございました
特攻隊長まるるうさん、ご解答ありがとうございました。
オブジェクトブラウザを使ってメソッドなのかプロパティーなのか確認するのは
手ですね!
今回のケースではCollectionをいたるところに使っているのでDictionaryで修正を行うと大変なので見送ることにしました。ゴメンナサイ
ですが、アドバイスはありがとうございます。
CollectionとDictionaryはうまく使い分けますね。それに参照設定が
いることまで教えてくださり感謝感謝です。
ありがとうございました。
ツイート | ![]() |