【VBA】Left関数が動かない!? エラーの原因とたった3秒でできる解決策

【業務効率化】VBA
スポンサーリンク

「えっ、なんで? 昨日まで動いてたじゃん…」

月末の締め作業中、Excelマクロを実行したら急に画面に現れる「コンパイルエラー:プロジェクトまたはライブラリが見つかりません」というメッセージ。

しかも、ハイライトされているのは、あの超基本的なLeft関数

「Left関数なんて、書き間違えるはずがない!」と、思わず叫びたくなってしまいますよね。

この記事では、VBAでLeft関数(やRight関数、Mid関数など)が突然エラーを起こす原因と、誰でも今すぐ実行できる解決策を分かりやすく解説します。

【業務効率化】VBAの記事を見る

なぜ、使い慣れたLeft関数が動かなくなるのか?

結論から言うと、この現象の原因は、多くが「参照設定の迷子(参照不可)」によるものです。

本来、VBAは非常にスマートです。「Left」と記述するだけで、「これは文字列の左端を抽出する機能だな」と阿吽の呼吸で理解してくれます。

しかし、新機能の追加や、別のパソコンへのファイル移行などを行うと、VBAが参照する「辞書(ライブラリ)」の中に、読み込めない項目(行方不明の辞書)が混ざってしまうことがあります。

するとVBAはパニックになります。

「必要な辞書が見当たらない! 何を信じていいか分からないから、基本機能も全部エラーにしてしまおう! Left関数? そんなの知らないよ!」これが、理不尽に見えるエラーの正体です。

解決策1:一番確実な「完全修飾」【おすすめ】

一番早くて、今後もエラーが起きにくい方法をお教えします。

それは関数に「名字(ライブラリ名)をつけて呼んであげる」ことです。

VBAの世界では、Left関数は「VBA」というライブラリの「Strings」クラスに所属しています。なので、こう書いてあげてください。

修正前

sResult = Left(sText, 2)

修正後

sResult = VBA.Left(sText, 2)

やり方はとても簡単で、「VBA.」を頭につけるだけです。これを専門用語で「完全修飾」と呼びます。 

こうすることで、たとえ他の参照設定に不備があっても、Excelは迷わず「VBAライブラリに所属しているLeft関数ですね」と正しく認識できるようになります。

【コピペで使える】安全な文字列操作コード例

RightやMid、Trimも同じ現象が起きやすいので、セットで覚えておきましょう。

Sub SafeStringManipulation()
    Dim sTarget As String
    sTarget = "  Hello VBA World  "
   
    ' Left関数:左から5文字を抽出
    ' 以前:Debug.Print Left(sTarget, 5)
    Debug.Print VBA.Left(sTarget, 5)
   
    ' Right関数:右から5文字を抽出
    ' 以前:Debug.Print Right(sTarget, 5)
    Debug.Print VBA.Right(sTarget, 5)
   
    ' Trim関数:両端のスペース削除
    ' 以前:Debug.Print Trim(sTarget)
    Debug.Print VBA.Trim(sTarget)
   
    MsgBox "処理が完了しました!", vbInformation
End Sub

解決策2:根本原因「参照不可」を直す

「VBA.」を付与するのは、いわば応急処置です。「環境そのものをスッキリ整理したい」という場合は、以下の手順で根本から解決しましょう。

  1. VBAの編集画面(VBE)を開く。
  2. メニューバーの [ツール] > [参照設定] をクリック。
  3. リストの中に 「参照不可:MISSING…」 と書かれている項目がないか探す。
  4. もしあれば、そのチェックを外して [OK] を押す。

これでVBAの混乱が収まり、通常の「Left」という記述でも正しく動作するようになります。 

※ただし、その「参照不可」だった機能自体をコード内で使用していた場合は、別途そのライブラリを入れ直す必要がある点にご注意ください。

まとめ:これからは「VBA.」をつける習慣を

いかがでしたか?

急なエラーはストレスフルですが、原因さえ分かれば恐れることはありません。

私の経験上、予期せぬトラブルを避けるために、あえて最初から VBA.Left や VBA.Right と書く癖をつけている人もいます。

これを機に、あなたも「VBA.」をつけるコーディングを取り入れてみてはいかがでしょうか。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBA
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました