重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excelvbaのdictionaryオブジェクトで、格納されているキーのセルのアドレスを取り出すことはできるのでしょうか?例えば、2番目に№2というキーが格納されているとして、その位置を知りたい時はどのようにすればよいでしょうか?
今は、dictionaryオブジェクトでセルの位置を取得できず仕方がないので、Collectionオブジェクトに格納して、
Debug.Print myCol(2).Address
セルの位置を取得していますが、例えば
Debug.Print mydicKey(1).Address
みたいな方法でdictionaryオブジェクトでもキー(アイテムでもよい)のセルの位置を取得する方法はないでしょうか?

宜しくお願いします。

A 回答 (2件)

こんにちは



dictionaryは単なる連想配列なので、key:valueの情報以上のものを(付加的に)保存することはありません。

とはいうものの、value値はvariantのようで、オブジェクトを格納可能なようです。
例えば、Rangeオブジェクトをvalue値にセットしておけば、ご質問のような参照も可能になるでしょう。

Dim dic
Set dic = CreateObject("Scripting.Dictionary")

dic.Add "hoge", Range("A1")
dic.Add "fuga", Range("B2")

Debug.Print dic.Item("hoge").Address '→ $A$1
Debug.Print dic.Item("fuga").Address '→ $B$2
    • good
    • 0
この回答へのお礼

そうですか。予め格納して結びつけて参照、というやり方しかないのですね。
ありがとうございました。

お礼日時:2019/02/01 12:28

No1です。



>予め格納して結びつけて参照~~
「予め」って、何もセットしないで参照することはできないはずですけれど・・・??
(外部のデータでも読み込むなら別ですが…)

「結びつけて」はいないと思います。(意味がよくわかりませんけれど)
No1の説明のように、Rangeオブジェクトを代入しているだけです。
keyとvalueを「結びつけて」という意味でしたなら、もともと連想配列(Dictionary)がそういうものですので・・・


‥‥なんとなくですが、「Dictionaryのキー」とかでご質問なさるよりも、「○〇を××したいのだけれど」という目的のほうで質問なさる方が、適切な実現方法の回答が得られそうな気がしますけれど。
    • good
    • 0
この回答へのお礼

すみません。keyとvalueを「結びつけて」という意味でした。
もしかしたら、可能かも、と思って質問しましたが自分が思うようなことは、連想配列では不可ということが分かったので、自分の質問の
意図としては必要な回答をしていただけています。
どうもありがとうございました。

お礼日時:2019/02/03 17:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!