ほぼ1日、上記の参照のさせ方にやられてしまいました汗
VBAを書いていたのですが、Range.FormulaR1C1Local内にVLOOKUPを記載した際に、エラーに出くわしました。
問題になったのは以下のようなケース。
列結合や動的にシート名を取ってきたいようなケースでのLookupの場合において、Range.FormulaR1C1Localを利用してVLOOKUP文を書こうとしたのです。
【マクロでのゴール】
取得元はこんな感じです。
マクロで動的にシートを指定するのと同時に、相対位置を利用して情報を取得しようとしました。すると、、、
マクロのコンパイルは通りますが、#NAME?と表示され意図した形にならず、、、
どうも、A1形式で記載した部分がアポストロフィで囲われてしまうため、おかしな表記になるようでした。
この事象、理屈を考えるとあまり難しいことではなく、
R1C1参照とA1参照を混ぜたことに起因して発生したようです。
この状態をなくすには、全部参照をA1参照に変えてあげることで回避可能です。
以下のように、ActiveCellなどを利用して、アドレスを割り出していきましょう。
この形で対応すると、以下のように絶対参照にはなるものの、やりたいことが実現できました。
VBAの世界では一般的な事象なのかもしれませんが、あまり触っていないこともあり、かなりはまってしまいました。
参照系は奥が深そうですね。。。
ところで、Office365 Proplusで久々にマクロを書いていたのですが、いまだに日本語でのマクロ入力ができないようですね。
シート名を日本語にしていたら、文字化けだらけになってしまいました。
日本語リストと打ち込んだら以下のような表記に。マクロを書くときには注意が必要ですね。
音楽:Doggy Dog