和風スパゲティのレシピ

日本語でコーディングするExcelVBA

WithとNameステートメントは併用できない

こんな風にファイルパスをセルに入力したシートで、

セル値にファイルパスを記載


このシートをWithステートメントで参照し、
Nameステートメントで名称変更を試みます。


すると、

With下でのNameステートメントエラー

こんな風にコンパイルエラーになります。

何故??


青の網掛けになっている構文エラー箇所を見ると、
Nameのあとに「.」を打つこと自体が禁止なんでしょうけど。


まあこの原因がわからないとかいう以前に、
そもそもNameステートメントがなぜ「As」なのかもわかんないんですけどね。


ファイル操作シリーズは「FileSystem」内のステートメントで、

FileSystemのメンバー

こんな風に「Dir」などもFileSystemから選べるのですが、
この仲間たちにもNameステートメントはいません。


というかそもそもオブジェクトブラウザ内にもいないので、
同じくAsを使うDimとかConstの仲間なんですかね。


まあよくわかりませんが、
いずれにせよWithで取得する値をNameステートメントには使えません。


ただ対処法は実に簡単で、

With Worksheets("ファイルパス設定")
    Name (.cells(1, 1)) As .cells(2, 1)
End With

これでOKです。


()を付ければ「Nameの後に.状態」が解消されて動くようになります。


ちなみに上記コードで分かる通り、Asの後ろに「.」は問題ないみたいですね。

Nameあとの「元のファイルパス」にだけ、カッコを付ければOKです。