Optional baseとRemoveDuplicatesの不仲

vbaでOptional base 1を指定すると、配列の開始indexが1になる。
デフォルトだと0。

Optional base 0のとき(default)

test_array(4) => [0][1][2][3]

Optional base 1のとき

test_array(4) => [1][2][3][4]

0を最初とする言語が多い印象だけれども、vbaを触る人やプログラムになれていないと、1の方が考えやすい時もある。
特にエクセルだと「0番目の行」なんて言い方は違和感。

ただし、Optional base 1の状態でRemoveDuplicatesを使おうとすると、エラーになって動作しない。

RangeObject.RemoveDuplicates(Columns, Header)

これのcolumns指定に影響しているのかと考え、-1してみたりしたが、内部の処理的に問題が起こってしまうようだ。


調べたら
http://answers.microsoft.com/en-us/office/forum/office_2010-excel/excel-vba-using-removeduplicates-in-a-module-with/258a1904-fef5-4217-b583-7fd23a706b49


教訓:Optional base 1は使わない方がいい。