collectionオブジェクトのItemメソッドの値を可変にするには?

解決


VBがんばってます  2004-10-06 18:49:49  No: 116808

先日は大変お世話になりました。
追記でもう一つ質問があるのですが、ご存知の方がいらっしゃいましたら
ご教授お願いします。

Collectionオブジェクトを使用してい値の修正を行っているのですが、
Mstcol.Item (i) & "." & collum = 修正値

上記のように記述していますがcollumの部分は可変で呼び出し元からの
引き数で項目名を取得していますが、この書き方だとエラーが出てしまいます。
Collectionオブジェクトとはこういった使い方はできないのでしょうか?
よろしくお願い致します


魔界の仮面弁士  2004-10-06 21:49:41  No: 116809

代入式の左辺の内容を、見直してみてください。

> Mstcol.Item (i) & "." & collum = 修正値

この場合、イコールの左辺は 「変数」や「プロパティ」ではなく、
文字列を連結した「式」になっています。

たとえば、数値型の変数に対して、
  A = 123
と書く事はできますが、左辺を式にして
  A + 10 = 123
などと書く事はできませんよね。それと同じ事です。

もし、左辺が「プロパティ」ならば、
  Mstcol.Item(i) = "abc"
のように、代入式の左辺に持ってくることが可能です。
しかし、Itemが「メソッド」だった場合は、上記のようには書けません。

VB6を例にすると、
  CollectionオブジェクトのItemメンバ → メソッド
  DictionaryオブジェクトのItemメンバ → プロパティ
  DictionaryオブジェクトのItemsメンバ → メソッド
といった感じですね。


特攻隊長まるるう  2004-10-07 02:39:34  No: 116810

ボクはこの手の事はオブジェクトブラウザで確認してますねぇ。
プロパティでも読み取り専用のものもありますし。コードを
選択して右クリックメニューから[定義]へ移動(ショート
カットは[Shift] + [F2])Function や Sub と書かれて
いればメソッド。Property と書かれているとプロパティ。
(他には Class, Module, Enum, Const, Type など)
アイコンも違います。…ただ…それで行くと Collection.Count
ってメソッドなんですよね。…ヘルプじゃプロパティなのに。
…まぁ、値の取得のみ可能とは書いてあるんですが。
…その辺は VB 特有のいい加減さという事でw。

余計なお世話で先手を打っておきますが、Dictionary オブ
ジェクトは Microsoft Scripting Runtime を参照しない
とオブジェクトライブラリに出てきませんのであしからず。


VBがんばってます  2004-10-07 02:50:55  No: 116811

魔界の仮面弁士さん、昨日に引き続き教えていただきありがとうございました。

やはり出来ないのですね。可変の部分はSelect case文を使ってcollumが
○○なら〜といった具合にケース分けして対処することにしました。
そのせいでソースがかなり冗長になりましたが・・・・

ありがとうございました


VBがんばってます  2004-10-07 02:56:09  No: 116812

特攻隊長まるるうさん、ご解答ありがとうございました。
オブジェクトブラウザを使ってメソッドなのかプロパティーなのか確認するのは
手ですね!

今回のケースではCollectionをいたるところに使っているのでDictionaryで修正を行うと大変なので見送ることにしました。ゴメンナサイ
ですが、アドバイスはありがとうございます。

CollectionとDictionaryはうまく使い分けますね。それに参照設定が
いることまで教えてくださり感謝感謝です。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加