【Mac】MacのExcelVBAでもDictionaryオブジェクトが使えた!というか自作(コピペ)できた!

2014年3月20日木曜日

mac tips vba

t f B! P L


ExcelVBADictionary

ちょっと釣り気味なタイトルですが。。。
実はずっとMacのExcelVBAでDictionaryオブジェクトが使えなくて困っていました。

Dictionaryオブジェクトというのは、WindowsのVBAで用意されているオブジェクトで、ユニークなキーと内容をセットで保存できるオブジェクトで別名辞書オブジェクトなんて言われることもあります。
これを使うと、ある列の値をユニークにしたり、ちょっととっておいてあとでキーをくるくる回して中身を拝借なんてことが簡単にできてしまいます。
難しい言葉で言うと連想配列 - Wikipediaなんて言うそうです。

使いかた

結論だけ先に書いてしまうと、以下の素晴らしい記事の中にあるコードをコピーして、クラスモジュールにペトリと貼り付けるだけです。

Office 2011 for Mac Dictionary replacement
やってみると、うぉ!と声が出るほど素晴らしいです。

と言ってもなんのことだかわからない方もいるかと思いますので、もう少し詳しく。

サイトにアクセスして、該当のコードをコピーします。

Th Dictionary1


Excelを立ち上げて、エディターを立ち上げます。
挿入から、クラスモジュールを挿入します。

Th Dictionary2


クラスモジュールが挿入されたら、コピーしたコードを全て貼り付けます。

Th Dictionary3


これで、Dictionaryオブジェクトのクラスができました。
次に、挿入から標準モジュールを追加します。

Th Dictionary4

標準モジュールから、先ほど作成したDictionaryオブジェクトを呼び出してみます。
こんな感じのコードを書いてテストしてみます。

Rem Dictionaryオブジェクトが動くかテスト
Sub test()
'Dictionaryオブジェクトは必ず挿入したクラスの名前で定義する。
Dim MyDicObj As Class1

'キーと内容の変数を宣言
Dim myKey As Integer
Dim myValue As String

'新しいDictionaryを作る
Set MyDicObj = New Class1

'キーを1から10までループ
For myKey = 1 To 10
     '内容を作る
     myValue = myKey & "内容"
     'Dictionaryにキーと内容を追加
     MyDicObj.add myKey, myValue
Next myKey

'キーを指定して内容を抽出
MsgBox "5のキーに入っている内容は" & vbNewLine & MyDicObj.items(5) & vbNewLine & "です。"

Set MyDicObj = Nothing
End Sub


ここでのポイントは2点です。
クラスモジュールを使う場合、必ず変数として、作成したクラスの名前で定義します。
また、使う時には、Newで新しくクラスを作成します。
これはクラスを使うときのお決まりみたいなものなので、覚えてしまいましょう。

Th Dictionary5

クラスの名前とは、エクスプローラーに表記されている名前です。

Th Dictionary6

クラスが正しく定義されていれば、エディターで書いているときに、.を打つと、プロパティが表示されます。

Th 01 dictionary

Dictionaryにキーと内容を追加するには、addを使います。

Th 02 dictionary

できたら、コードを実行してみます。

Th 03 dictionary

キーと内容がセットになって登録されていることがわかります。

Th 04 dictionary

サンプルのダウンロード

サンプルのダウンロードは以下から可能です。

サンプルダウンロード

最後に

データ容量が大量になったときも問題なく動くのかまだテストしていないので、なんともですが、ある程度のデータ量ならそれなりに動いてくれそうです。
Macでどうやって実現しよう!?とかなり困っていたので、とてもとても助かります。

以上です。

過去の記事

ラベル

アプリ (545) iPhone (485) mac (244) 買い物 (89) 番外 (87) ブログ (74) 書評 (68) 写真 (64) Blogger (63) 仕事 (55) webサービス (51) 生活 (50) todo (38) tips (36) rss (33) DVD (24) DraftPad (23) music (19) 外食 (14) 機種変更 (14) メール (13) ニュース (12) お出かけ (11) まとめ (11) アクセス解析 (11) HTML (9) ドラマ (8) vba (7) 絵本 (7) Excel (6) Textwell (6) web (4) libreoffice (3) twitter (3) 勉強 (3) basic (2) 素材 (2)

ブログを検索

QooQ