目次

キャレット( ^ の記号)でコンパイルエラー発生

ExcelVBA でキャレットの記号( ^ )でべき乗の記述をしようとしたところ、コンパイルエラーが発生してしまいました。使用しているパソコンの OS は Windows11 Home 64 ビット、 Excel のバージョンは Excel for Microsoft 365 です。

今回の投稿は、このコンパイルエラーの解消方法について書いてみたいと思います。

Microsoft Visual Basic for Applications  コンパイルエラー:修正候補:ステートメントの最後
Microsoft Visual Basic for Applications コンパイルエラー:修正候補:ステートメントの最後

目次まで戻る

エラーの再現

キャレットの記号( ^ )でコンパイルエラーが発生した時の状態を再現してみたいと思います。

下の画像の「 a=2^2 」の末尾で Enter キーを押すとコンパイルエラーが発生してしまいます。

キャレットの記号( ^ )でエラーが発生する前の画像です。
キャレットの記号( ^ )でエラーが発生する前の画像です。

下の画像は Enter キーを押してエラーが発生した状態です。

コンパイルエラーが発生しました。
コンパイルエラーが発生しました。

VBA のコードは以下のようになっています。

Sub Windows11_64ビット_Excel365でキャレットを使用したマクロ()

Dim a As Long

a =2^2 'この記述の後に Enter キーを押すとコンパイルエラーが発生してしまう。

End Sub

目次まで戻る

スペースを挿入

少し調べてみたところ、下記 URL のページに 64 ビットパソコンの場合のキャレット記述時の注意が記載してありました。下記のページによると、キャレットの直前にスペースを挿入すると良いそうです。

上記のコンパイルエラーの発生したマクロを以下のように修正してみました。

「a=2^2」としていた行を「a=2 ^2」に修正してみました。キャレットの記号の前に「 」半角のスペースを挿入しています。「a=2 ^2」と入力して Enter キーを押すと自動的に「a=2 ^ 2」とキャレットの記号の後にもスペースが挿入されました。

Sub Windows11_64ビット_Excel365でキャレットを使用したマクロ_スペース挿入()

Dim a As Long

a = 2 ^ 2 'キャレットの前に半角スペースを挿入している。

Debug.Print a

End Sub

上のマクロを実行してみると下の画像の結果になりました。エラーの発生もなく、イミディエイトウィンドウに「4」の数字が出力されました。

キャレットの記号の前にスペースを挿入したところ、イミディエイトウィンドウに「4」と出力されました。
キャレットの記号の前にスペースを挿入したところ、イミディエイトウィンドウに「4」と出力されました。

目次まで戻る

LongLong 型

64 ビット環境でのキャレットの記号は LongLong データ型の型宣言文字としての意味も持つようです。 LongLong 型の型宣言文字は「 ^ 」のようです。

下記のマクロを作成してみました。 LongLong 型の型宣言文字のキャレットを使用して変数宣言を行い、 TypeName 関数でデータ型を確認してみます。

Sub LongLong型宣言()

Dim a^ '「Dim a As LongLong」と記述するのと同じ意味になるようです。

Debug.Print TypeName(a)

End Sub

上のマクロを実行すると、イミディエイトウィンドウに「 LongLong 」と出力されました。

LongLong

上のマクロの実行結果です。

イミディエイトウィンドウに「LongLong」と出力されました。
イミディエイトウィンドウに「LongLong」と出力されました。

目次まで戻る

テスト環境

    • Windows 11 Home 64 ビット
    • Microsoft Excel for Microsoft 365

    目次まで戻る

    あとがき

    私の思い付きですが、べき乗したい数値をカッコ()で囲んでみたのが以下のマクロです。下記のマクロを実行するとイミディエイトウィンドウに「4」と出力されました。べき乗の計算は正しく行えたようです。

    Sub Windows11_64ビット_Excel365でキャレットを使用したマクロ_カッコ挿入()

    Dim a As Long

    a = (2) ^ 2 'べき乗したい数値をカッコ()で囲んでみました。

    Debug.Print a

    End Sub

    以上、閲覧ありがとうございました。

    目次まで戻る

    同じカテゴリの投稿(Excel VBA)

    前後の投稿