Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10589 / 76734 ←次へ | 前へ→

【71691】Re:表の整理
発言  UO3  - 12/3/30(金) 11:46 -

引用なし
パスワード
   ▼ドカ さん:

▼ドカ さん:

こんにちは

最初に、追加質問のほうを。
これは、基本的には Debug.Print dic(myName)(n) でもエラーにならず参照できると思いますが
このコードが書かれている時点で、myName の値や n の値が正しいということが前提です。
エラーになった時、黄色く光りますが、マウスを myName や n に当てた時にポップアップされる値は
正しいものでしょうか?

次に、前の説明の中で、Dictionaryには「何でも格納できる」といいました。
たとえばオブジェクトも (Set をかけることで)Dictionaryのデータとして格納できます。

これは、いささか「マニアック」な使い方になりますけど、
Set Dic("AAA") = CreateObject("Scripting.Dictionary")
Set Dic("BBB") = CreateObject("Scripting.Dictionary")
このようにしますと、Dic の中の"AAA" というキーのデータが、"AAA"用の、独立したDictionary。
Dic の中の"BBB" というキーのデータが、"BBB"用の、独立したDictionaryになります。

ということは Dic("AAA") そのものが Dictionary ですから
Dic("AAA")("XYZ") と書きますと、Dic("AAA") というDictionaryの中に登録されている
"XYZ"というキーを持つデータということになります。

また、「配列」も格納することができます。

たとえば
Dic("AAA") = Array("X","Y","Z") と書きますと
"AAA" というキーで登録されているのが1次元配列ということになります。

で、ご質問の dicRow(rowKey) 。
dicRow は キーが 名前とその名前のあった列番号(ブロックの最初の列番号)を組み合わせたもの。
データは、そのキーでの項目の数、つまり、そのブロックに、その名前が何件あったかという数です。
なので、dicRow(rowKey) で得られる内容は、単純な数字ですから、中身の参照ができます。
仮に、dicRowに rowKey に当たるデータがなくとも、エラーにはならず空白値を返してくれます。
(これも、Dictionaryが使いやすい一面です)

一方、dic(myName)(n)。
こちらのほうは、Dic(myName) で得られるデータは myName用の「子Dictionary」です。
Dic("田中") とした場合、"田中"が存在すれば、"田中"用の子Dictionaryのオブジェクトが
1次元配列がかえってきます。
n は dicRow(rowKey) ですから Dic("田中")(4) とすると、"田中"用のDictionaryのキーが4
つまり、F列から始まるブロックのデータということになります。
で、このデータは、どんなものかといいますと、「1次元配列」です。
これがエラーになるとすると、考えられることは以下の場合のみです。

Dic に "田中"が未登録。 この場合、未登録でもエラーにはなりません。
なりませんが、配列でもオブジェクトでもない空白値が返ります。
配列であればその4番目の要素、Dictionaryであれば 4 というキーのデータということになるのですが
空白値(4) ということですので、当然エラーになります。

19 hits

【71555】表の整理 ドカ 12/3/16(金) 20:43 質問
【71557】Re:表の整理 ドカ 12/3/16(金) 20:54 発言
【71559】Re:表の整理 何か変じゃないですか 12/3/16(金) 22:44 発言
【71561】Re:表の整理 ドカ 12/3/17(土) 4:42 発言
【71560】Re:表の整理 UO3 12/3/16(金) 23:09 発言
【71562】Re:表の整理 ドカ 12/3/17(土) 4:57 お礼
【71564】Re:表の整理 UO3 12/3/17(土) 9:39 回答
【71671】Re:表の整理 ドカ 12/3/27(火) 14:10 質問
【71672】Re:表の整理 UO3 12/3/27(火) 16:43 発言
【71673】Re:表の整理 UO3 12/3/27(火) 17:20 発言
【71674】Re:表の整理 ドカ 12/3/27(火) 20:11 発言
【71675】Re:表の整理 ドカ 12/3/28(水) 9:08 お礼
【71676】Re:表の整理 UO3 12/3/28(水) 10:34 発言
【71677】Re:表の整理 ドカ 12/3/28(水) 11:10 発言
【71678】Re:表の整理 UO3 12/3/28(水) 15:08 発言
【71679】Re:表の整理 UO3 12/3/28(水) 15:13 発言
【71683】Re:表の整理 ドカ 12/3/28(水) 20:34 お礼
【71688】Re:表の整理 ドカ 12/3/30(金) 8:29 質問
【71689】Re:表の整理 ドカ 12/3/30(金) 9:06 質問
【71690】Re:表の整理 UO3 12/3/30(金) 10:27 発言
【71691】Re:表の整理 UO3 12/3/30(金) 11:46 発言
【71692】Re:表の整理 UO3 12/3/30(金) 21:10 発言
【71720】Re:表の整理 UO3 12/4/2(月) 14:10 発言
【71724】Re:表の整理 ドカ 12/4/3(火) 7:59 お礼
【71728】Re:表の整理 UO3 12/4/3(火) 13:16 発言
【71731】Re:表の整理 UO3 12/4/3(火) 16:54 発言
【71725】Re:表の整理 ドカ 12/4/3(火) 8:15 質問
【71726】Re:表の整理 UO3 12/4/3(火) 12:39 発言
【71727】Re:表の整理 UO3 12/4/3(火) 12:44 発言
【71736】Re:表の整理 ドカ 12/4/4(水) 15:59 お礼

10589 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free