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の文法を理解できてない。