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してみたりしたが、内部の処理的に問題が起こってしまうようだ。
教訓:Optional base 1は使わない方がいい。