その他

VBScriptエラー:「この名前の構文が正しくありません」というエラーの対処法[No85]

スポンサーリンク

エラー発生状況

Excelの「名前の管理」の名前を削除するスクリプト(バッチファイル:vbs)を実行したら、次のエラーが表示されました。

エラー発生個所を確認しましたが、実行したスクリプトは今まで実行していて特に問題はなかったので、Excelに問題があると判断しました。

Excelの「名前の管理」を確認する為に、非表示になっている名前も表示するように下記のマクロを実行しました。


Option Explicit

Public Sub Sample()
    Dim name As Object
    For Each name In Names
        If name.Visible = False Then name.Visible = True
    Next
End Sub

マクロ実行前は空でしたが、実行後は下の画像ように表示されました。

名前:「_xlfn.SINGLE」、値「#NAME?」、参照範囲「=#NAME?」、範囲「ブック」、コメント「」

これは「削除」ボタンで削除できましたが、Excelを閉じてもう一度開くと、また同じように表示されてしまいます。また、削除して該当VBSを実行しても同じエラーが起きてしまいます。

行ったこと

Excelでどのシートが影響しているのか確認する為に、1つずつシートを削除しては開き直してマクロを実行することを繰り返し、原因のシートを特定しました。原因について詳しく調査した結果を続いてお話します。

原因

このエラーが発生する原因は、Excelに新機能が追加されたバージョンアップによるもののようです。

「暗黙的なインターセクション演算子:@(アットマーク)」(#動的な配列のサポート)が関係しており、数式に@が使われているとこのエラーが起きてしまうようです。

対応した手順

手順1.エラーが発生したら、Excelを開き、マクロを実行し、「名前の管理」の「名前」を確認する。

手順2.削除しても復活してしまう、消えない「名前」の「_xlfn.SINGLE」が何故表示されるのか原因を探す。

※Excelの検索画面で「検索場所」を「ブック」にし、「検索する文字列」を「@」にして検索するのが簡単な方法です。

※ちなみに、今回は下図のようになっていました。

手順3.「@」を削除して、Excelを開き直し、修正した数式の結果が変わっていないか確認する。※今回は変更はありませんでした。

手順4.再度、「名前の管理」の「名前」を表示させるマクロを実行する。

以上の手順で対応したところ、無事にエラーメッセージは表示されなくなり、VBSも問題なく正常な動作を得ることができました。

補足、参考URL

Microsoft(マイクロソフト)のサポートページに重要なことが書いてありました。興味のある方はそちらも是非チェックしてみて下さい。@を削除して良いかどうかなども書いてあります!

また、次の関数でこの事象は発生するようなので、利用している方、今後利用する可能性のある方は特に注意した方が良いと思います。


COLUMN
FILTERXML
FORMULATEXT
FREQUENCY
GROWTH
HYPERLINK
INDEX
INDIRECT
ISFORMULA
LINEST
LOGEST
MINVERSE
MMULT
MODE.MULT
MUNIT
OFFSET
ROW
TRANSPOSE
TREND
カスタム関数

新しい数式で @ 演算子を使用する

@ 演算子を含む動的配列 Excel で数式を作成または編集すると、_xlfn として表示されることがあります。動的な配列 Excel の SINGLE ()。

暗黙的なインターセクション演算子:@ - Office サポート

範囲または配列を返す Excel 関数 - Office サポート

動的配列数式と、こぼれた配列動作 - Office サポート

雑記

つい先日まで肌寒かった気がするのですが、いつの間にか桜も咲き誇る季節となりました。入学、進級、就職など、皆さんそれぞれの形で新生活を迎えられていることと思います。

新生活はワクワクする期待も大きいですが、その分環境の変化に不安も付き物です。新しい環境に馴染めるまでは、心身共にストレスを感じることもあるでしょう。

そんな時は、1日の中で軽く運動をして体を動かしてみたり、趣味の時間を設けてみたり、入浴や睡眠など心と体を休める時間をしっかりとることが大切です。ストレスを残したまま翌日を迎えてしまうと、勉強でも仕事でもモチベーションが維持できずミスも多くなって、更にそれがストレスになる悪循環が生まれてしまいかねません。その日のストレスはその日のうちにリフレッシュし、引きずらないように過ごせるといいですね。

最後までお付き合いいただきありがとうございます!

この情報が誰かの役にたてれば幸いです。

スポンサーリンク

-その他