BizFAQ-ビズファック

仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。

  • TOP
  • 副業解禁時代の年収1000万円戦略
  • Excel
  • Word
  • PowerPoint
  • サイトマップ

VBAでDictionaryデータ型(連想配列)を活用する3つのポイント

2015年3月31日 by Gen

VBA_Dictionary_2

Dictionaryデータ型は日本語では「連想配列」とも呼ばれ、VBAでも使用できます。その名の通り、「文字」から「連想して」値を取り出します。
例えば、「Point」というDictionaryをVBAで定義した上で、「田中」という文字列から「87点」を取り出すような格好になります。



目次

  • Dictionaryデータ型をVBAで使用するには
    • 1.参照設定をする
    • 2.サンプルを作成する
      • Sub sumple() Dim Point As New Dictionary Point.Add “田中”, 87 Point.Add “鈴木”, 67 MsgBox Point(“田中”) End Sub
    • 3.エラーになるんだけど…
      • Sub sumple() Dim Point As New Dictionary Point.Add “田中”, 87 Point.Add “鈴木”, 67 If Point.Exists(“田中”) = True Then Point(“田中”) = 90 Else Point.Add “田中”, 90 End If MsgBox Point(“田中”) End Sub

Dictionaryデータ型をVBAで使用するには

Dictionaryデータ型は比較的新しい言語で搭載されているデータ型というふうに考えがちですが、VBAでも他の言語とも遜色なく使用することが出来ます。
参照設定せずに使用する方法もありますが、VBAのコード補完が使用できなくなってしまうので、参照設定をする方法をおすすめします。

1.参照設定をする

Dictionaryデータ型は初期状態では使用することが出来ません。
参照設定は「ツール」→「参照設定」から設定できます。

VBA_Dictionary_1

「Microsoft Scripting Runtime」を参照します。

VBA_Dictionary_2

2.サンプルを作成する

まずは動く物を作りましょう。基本的に「オブジェクト」と呼ばれるものは全て「New」して代入するか、もともと用意されているものを代入するかの2つに分かれます。今回のDictionaryデータ型はもともとあるのを利用するわけではないので、「New」して代入します。

Dictionaryデータ型はインデックスとして利用する文字列と、それで連想される値を同時に入力します。入力するためのメソッドは Dictionary.Add key, item です。

Sub sumple()
Dim Point As New Dictionary

Point.Add “田中”, 87
Point.Add “鈴木”, 67

MsgBox Point(“田中”)
End Sub

実行してみると、メッセージボックスで「87」が表示されます。

VBA_Dictionary_3

3.エラーになるんだけど…

Dictionaryデータ型使う時よく起きるのは、重複したキーを追加しようとしたエラーです。重複させないように、キーの追加前に存在を確かめます。

キーの存在を確かめるのは、Dictionary.Exist (key) です。Boolean型で検査の結果を返します。

Sub sumple()
Dim Point As New Dictionary

Point.Add “田中”, 87
Point.Add “鈴木”, 67

If Point.Exists(“田中”) = True Then
Point(“田中”) = 90
Else
Point.Add “田中”, 90
End If

MsgBox Point(“田中”)
End Sub

コードを実行するとエラーなく、「90」が表示されます。

VBA_Dictionary_4

ステップ実行してみると一目瞭然ですが、Point.Addではなく、Point(key)から値の再設定を行っています。


Dictionaryデータ型は実際使いやすいものではありませんが、とても読みやすいVBAコードになります。また参照設定についても解説しました。参照設定はVBAの世界を広げるようなものです。

本来のVBAでは不可能なコードも可能になることもありますので、どんどん情報を集めてください。

Filed Under: Dictionary Tagged With: Dictionary, Excel, vba, マクロ




© Copyright 2015 BizFAQ · All Rights Reserved · Powered by WordPress · Admin