MasaHeroの日記 RSSフィード

2010-01-13

[]Excel VBA連想配列

Excelデータ整理でHashMapとか連想配列とか辞書とか使えたらうれしい状況になったので、ちょうどそのものなところを参照して無理やりやってみた。Excelオンリー。他のVBAではこの方法は無理。

単純に原理だけ書いておくと、シート1つそれ用に確保して第1列をキーとみなす。データの追加はそのシートへの行の追加を表し、データ更新はその行の更新を表す。もちろんデータの消去はその行の削除と対応している。

キーでの検索はワークシート関数である"MATCH"を用いる。データの取り出しはMATCHで得られた行番号の示す行の第2列の内容を返すことで行う。キーにも値にも文字列以外使えないが、そこはいろいろ駆使してカバー。たとえば3要素の文字列配列を使いたかったら適当に区切り文字を選んで"&"で結合して"Split"で分離。整数値が使いたいなら"CStr"で文字列化して"CDec"で整数化。

詰まったのは、VBって2つの引数を持つ関数、いや"Sub"で定義したからサブルーチンか、を呼び出すとき以下の書式だとはじかれたこと。

Sub SetData(htKey As String, htValue As String)
End sub
SetData("1","2") ''これはだめ
SetData "1","2" ''これはOK

Sub GetData(htKey As String)
End sub
GetData("1") ''これはOK
GetData "1" ''これもOK

いまいちVBの文法を理解できてない。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/MasaHero/20100113/p1
応援バナー
真剣で私に恋しなさい!S 戯画『 BALDR SKY diveX』応援バナー企画参加中! ゆきいろ 〜空に六花の住む町〜