パソコン仕事5倍塾
35,000人を指導した東大卒・元日本IBM社内講師が直伝
MENU
受講生さんの投稿
(投稿ID: 4578)
For c = 0 To dic.Count - 1 Debug.Print dic.Keys(c), dic.Items(c) ’←★ Next
小川 慶一さんのコメント
(コメントID: 6317)
'ポイント: '[A] dic.item(文字列) -> xxx というキーで格納された値を取得する '[B] dic.items(数値) -> キーと値のペアのうち、 xxx 番目のものの、値を取得する '[C] dic.keys(数値) -> キーと値のペアのうち、 xxx 番目のものの、キーを取得する '[OK] 以下は正常な処理の例です。 item, items という言葉の使い分けに特に注目してください。 Sub MyDicSample1_OK() Dim dic As New Scripting.Dictionary dic.Add "key_a", 100 dic.Add "key_b", 200 dic.Add "key_c", 300 '[A] 以下では、キーを使って値を取得します。 Debug.Print vbNewLine & "Get values by key" Debug.Print dic.Item("key_a") Debug.Print dic.Item("key_b") Debug.Print dic.Item("key_c") '[B] 以下では、インデックスを使って値を取得します。 Debug.Print vbNewLine & "Get values by index" Debug.Print dic.Items(0) Debug.Print dic.Items(1) Debug.Print dic.Items(2) '[C] 以下では、インデックスを使ってキーを取得します。 Debug.Print vbNewLine & "Get keys by index" Debug.Print dic.Keys(0) Debug.Print dic.Keys(1) Debug.Print dic.Keys(2) '[B], [C] を For Next 構文で書いてみました Dim c As Long Debug.Print vbNewLine & "Get items - using for structure" For c = 0 To dic.Count - 1 Debug.Print dic.Items(c) Next Debug.Print vbNewLine & "Get keys - using for structure" For c = 0 To dic.Count - 1 Debug.Print dic.Keys(c) Next End Sub '[NG] 以下は実行時エラーになります。Items, Keys, Item はありですが、 Key というのはNGなので。 Sub MyDicSample2_NG() Dim dic As New Scripting.Dictionary dic.Add "key_a", 100 dic.Add "key_b", 200 dic.Add "key_c", 300 '[OK] 以下では、キーを使って値を取得します。 '[A], [B], [C]のどれか?というと、[A]の構文ですね。 Debug.Print vbNewLine & "Get values by key" Debug.Print dic.Item("key_a") Debug.Print dic.Item("key_b") Debug.Print dic.Item("key_c") '[NG] 以下は、構文エラーです。Items, Keys, Item はありですが、 Key というのはNG。 '[A], [B], [C]のどれか?というと、どれでもない。 Debug.Print vbNewLine & "Get values by key" Debug.Print dic.Key("key_a") Debug.Print dic.Key("key_b") Debug.Print dic.Key("key_c") End Sub '[NG] 以下は論理エラーになります。 'インデックスやキーの指定で文字列型の場合、数値型の場合を混在させているので紛らわしいですが、 '発展編2講座ですので、そこはサラッと流します。 '理解できない場合はさらに質問してください。 Sub MyDicSample3_NG() Dim dic As New Scripting.Dictionary dic.Add "key_a", 100 dic.Add "key_b", 200 dic.Add "key_c", 300 '以下は、該当するキーが存在しないので、出力結果はEmpty型になります。 '[A], [B], [C]のどれか?というと、[A]の構文ですね。 Debug.Print vbNewLine & "Erros - keys not exists" Debug.Print dic.Item("0") Debug.Print dic.Item("1") Debug.Print dic.Item("2") '以下も、該当するキーが存在しないので、出力結果はEmpty型になります。 '[A], [B], [C]のどれか?というと、[A]の構文ですね。 Debug.Print vbNewLine & "Erros - keys not exists" Debug.Print dic.Item(0) Debug.Print dic.Item(1) Debug.Print dic.Item(2) '以下は、該当するインデックスが存在するので、それぞれに該当する item が出力されます。 '[A], [B], [C]のどれか?というと、[B]の構文ですね。 Debug.Print vbNewLine & "Erros - keys not exists" Debug.Print dic.Items("0") Debug.Print dic.Items("1") Debug.Print dic.Items("2") '以下も、該当するインデックスが存在するので、それぞれに該当する item が出力されます。 '[A], [B], [C]のどれか?というと、[B]の構文ですね。 Debug.Print vbNewLine & "Erros - keys not exists" Debug.Print dic.Items(0) Debug.Print dic.Items(1) Debug.Print dic.Items(2) End Sub
田中 宏明さんのコメント
(コメントID: 6740)
(コメントID: 6741)
Captcha:
たった1ヶ月で人生が劇的に変わりました
佐藤信さん
役員クラスの方から高い評価を受けるようになりました。
佐賀県 - 岩本徹さん
今までまったく知らなかったショートカットキーを使いまくっています。
東京都 - 鷹觜慶さん
年齢60才間近、営業で外回りの時間が多い私でも退社時間が1-2時間程度早くなりました。
東京都 - 宗内隆明さん
受講前もすでにパソコン得意でしたが、そんな私でも受講して本当に良かったと思えた講座です。
東京都 - 佐伯とも子さん
ここまで包括的に仕事に役立つ深い学びを受けれた講座は初めてでした
東京都 - 飯田倫子さん
2025年04月22日 05:44
2025年04月22日 05:41
2025年04月18日 09:15
2025年04月09日 07:21
2025年04月06日 09:31
2025年04月22日 05:42
2025年04月19日 19:19
2025年04月18日 09:16
2025年04月13日 06:10
2022年02月24日 10:59
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
2022年02月02日 00:00
2022年02月02日 03:00
2022年02月02日 06:00
2022年02月02日 09:00
2022年02月02日 12:00
2025年04月15日 11:30
2025年04月08日 16:30
2025年04月07日 16:30
2025年04月04日 15:45
2025年03月27日 13:30
2025年02月04日 08:51
2025年02月03日 12:58
2024年11月27日 11:48
2024年11月25日 12:07
2024年11月17日 09:51
2025年03月26日 22:33
2025年03月26日 22:12
2025年03月24日 22:28
2025年03月19日 20:10
2025年03月18日 20:52
2025年04月16日 08:30
2025年03月18日 09:07
2025年03月18日 09:06
2025年03月15日 13:23
2025年02月26日 16:37
2025年04月02日 21:01
2025年04月02日 20:47
2025年04月02日 20:37
2025年04月01日 22:03
2025年04月01日 21:27
2025年04月16日 08:32
2025年03月18日 09:10
2025年03月18日 09:09
受講生さんの投稿
(投稿ID: 4578)
★「items」と複数形でしたが
モジュール3では、
dic.Add "sp1", dic.Item("ws1").Shapes(2)
dic.Item("sp1").Select ’←★★
Debug.Print dic.Item("sp1").Width
Debug.Print dic.Item("sp1").Height
★★のように「item」という単数形をとるのはどうしてですか。
小川 慶一さんのコメント
(コメントID: 6317)
これは興味深い質問ですね。
ありがとうございます (^^*
Item, Items, Keys, と、いろいろ出てきてややこしいですね。
ということで、整理のために、以下のようなサンプルコードを書きました。
Microsoft Scripting Runtimeを参照のうえ、以下のコードをステップイン実行してみてください。
そうすれば理解が進むのでは?と思います。
もちろん、実行してみて不明なことがあればまた遠慮なく質問してください (^^*
田中 宏明さんのコメント
(コメントID: 6740)
2019-11-05 15:30:03のサンプルコードをステップイン実行(F8)し、Dictionaryオブジェクトの仕様について理解が深まりました。
・Indexに対応するItemやKeyを取得可能
⇒ Items, Keysはあり
・Keyに対応するItemを取得可能
⇒ Item はありで、 KeyはNG(構文エラー)
小川 慶一さんのコメント
(コメントID: 6741)
こんにちは。
辞書の取り扱いは慣れないとややこしいですね。
と書きつつ、僕自身も別に慣れきっているわけではなく(そもそもエクセルVBAでは滅多に必要としない)、必要に迫られると過去に自分が実務で書いたコードや教材用のサンプルコードを参照しています (^^;