• ベストアンサー

VBA と コンパイル の関係

Siegruneの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.4

例)Dim asx As springのところでエラーになるプログラム Sub aaa() Cells(1, 1).Value = 123 End Sub Sub bbb() Dim asx As spring End Sub これで、sub aaa()を実行すると VBEのオプション:全般の順次コンパイルにチェックがある場合、 aaa()は実行され、正常終了します。 ⇒ wikiなどにある「インタプリタ(interpreter)とは・・・逐次解釈しながら実行するプログラムのこと。」の通り、処理するサブルーチンを処理する順番にコンパイル(解釈)しながら実行しています。 VBEのオプション:全般の順次コンパイルにチェックがない場合、 sub bbb()の Dim asx As spring のところがエラー表示され、aaa()は実行されません。 逐次解釈しながら実行するプログラムとはいえないですね。 しかし、aaa()を Sub aaa() Cells(1, 1).Value = 123 a == 1 End Sub とすると、どちらの場合も Cells(1, 1).Value = 123 は処理されず、a == 1でエラーになります。 VBEのオプション:全般の順次コンパイルにチェックがない場合、 インタープリターといっても、行単位の逐次解釈ではないですね。 あくまで、サブルーチン単位の逐次解釈です。 wikiの「基本的には」となっているところが、どういう意図かは知りませんが、 実行時コンパイラがVBAでは勝手に動いていると思ったほうがいいような気もします。 (本題ではなさそうなので詳しくはやめておきます。) 「VBAProjectのコンパイル」機能は、エラーチェック目的で、実行時に行われるコンパイルを テスト実行しているだけと思えばいいのでは? ※ コンパイルといってもファイル出力しているのではなくメモリ上に展開しているだけ かもしれません。(詳細不明) なお、「VBAProjectのコンパイル」実行しただけで、ファイルサイズが大きくなっているから、 これをやっておくと、実行時に行われるコンパイルがすでに済んだ状態になって 少し早いのかもしれません。 ただし、マクロを1回実行しただけで保存しても同様にファイルサイズは大きくなるので、 どちらをやってもあまり違いはないかと思います。 (同じサイズにならないところがまた良く分からないけど。  どちらにしろ、EXCELの内部的な話なのでよくわからないところです。  ※以下は、感想程度に思っていただいて、あてにしないでください。  本題と関係するのか微妙ですし。)

t6y7u5r4
質問者

お礼

ありがとうございました。

関連するQ&A

  • VBAでコンパイルする時のショートカットキー

    VBA初心者です。 VBAでプロシージャを作成するたびに、コンパイル作業を頻繁に行うので、 メニューバーの「デバッグ」→「VBAprojectのコンパイル」をクリックしなくてもよい、ショートカットキーがあれば教えてください。

  • vbaとvb 「デバッグ」「ビルド」

    vbaの「デバッグ→VBAプロジェクトのコンパイル」=VB.netで言う「ビルド」、 vbaの「実行」=VB.netの「デバッグ開始」 であってますか? デバッグ=コンパイル=ビルドなのか混乱しています。 いろいろな言葉が出てきて頭がぐちゃぐちゃなので整理したいです。 よろしくお願いします。

  • VBAの将来性について

    いつもお世話になっております。 VBAのことを調べていたら以下のように書かれていました。 >近年マイクロソフト社はActiveX/Component Object Modelから.NET Frameworkへの転換を進めており >Visual Basic for Applications - Wikipedia >http://ja.wikipedia.org/wiki/VBA 調べてみるとVSTOという技術でのOffice開発があって、 それへの転換を進めているということなのだろうと推測しました。 そこで質問なのですが、VBAの技術は追加されていますか? Office2003と比較してOffice2007でこういう技術が追加されたという 情報がございましたら、教えて頂けませんか? マイクロソフト社としてはVBAにこれから力を入れていくものなんでしょうか? VBAがなくなるということはないと思うのですが、 技術の追加は主にVSTO側に行っているようであれば、 今後のOffice開発の方針を考えたいと思い、質問させて頂いております。 ぜひよろしくお願いいたします。

  • デバッグ→コンパイル すると 停止する

    vbaでコードを書き、 デバッグ→コンパイルをすると 必ず画像のような画面が出て、アクセスが再起動してしまいます。 ファイルが壊れているのでしょうか? 2010です。

  • Excelの"マクロ"という言い方は英語圏では?

    教えてください。 日本では、ExcelのVBAを"マクロ"と呼ぶことが多いです。 これは厳密には誤った用法のようですが、広く使われている思います。 そこで、英語圏ではどうなのでしょうか? やはり、日本同様、macroと呼ばれることが多いのでしょうか? なお、アメリカのAmazonのサイトを覗くと、macroとvbaの両方があるようです。 https://www.amazon.com/s?k=excel+macro&ref=nb_sb_noss wikipdeidaでも、数は少ないですがmacroをvbaの意味で使っているような記述あるようでした。 https://en.wikipedia.org/wiki/Visual_Basic_for_Applications

  • 「ファイルが見つかりません」VBAが実行できない

    今まで問題なく使えてたアクセスのファイルがあるのですが vbaコードを実行しようとしたら、ファイルが見つかりません と言うエラーがでてしまいます。 VBE画面を開いて、コンパイルしてみたのですが、どこでエラーになってるのか出ません。 何をしても、ファイルが見つかりません が出ます。 どうすればいいでしょうか? 2010です。

  • 言語の変換について

    下記インタプリタ(wikiの文章抜粋)について質問です。 下記のコンパイルとインタプリタの動作連携のメリットの理解に苦しんでおります。 最近の処理系では、Javaや.NET Frameworkなど、JITコンパイラを利用している物の中で、起動時にコンパイルすると起動が遅くなるため、まず、最初にインタプリタで動かし、バックグラウンドでコンパイルして、コンパイルが完了してから、そちらに切り替える、併用型もある。 環境:visual C#2010

  • EXCEL VBAで

    VBA初心者です 簡単過ぎる質問で申し訳ありませんが 調べてみても分からなかったので質問さしてもらいます VBEの標準モジュール1で簡単なプログラムを作成しました デバッグツールバーから実行をすると プログラム通り、動作はしましたが・・・ VBE画面を閉じてからの、プログラムを実行する方法が分かりません 右上の×を押しの、プログラム実行です 作ったプログラムを動作しようと思って 開発→マクロを押しても、作ったマクロ名が表示されないです どのようにしたら、標準モジュールで作ったマクロが、表示されるようになりますか?

  • VBAについて教えて下さい。

    VBAの事について教えて下さい。 初心者です。本で読んだのですが、エクセルのツールから、 マクロ→Visual Basic Editorをクリックすると、 Microsoft Visual Basic‐Book1と言う画面で、 左側に VBA Project(Book1)と言う画面になるとなっていますが、 Microsoft Visual Basic‐Excel_JSV7.xlaと言う画面になり、 Excel_JSV7.xla‐JSV7Transk JSheet(コード)と他に2つが出てきます。 こんな時は、どうすれば直るのでしょうか?  どなたか作業の仕方を教えていただけないでしょうか。

  • エクセル2002に追加でVBAヘルプをインストールしたい

    VBAヘルプを使うために、エクセル2002に追加でVBAヘルプをインストールしたいです。 「プログラムの追加と削除→Microsoft Office XP Professional 変更→機能の追加/削除→Office共有機能→Visual Basic for Applications→Visual Basic ヘルプ」 のような感じで進んでいきますが、最後にCD-ROMを挿入して下さいという画面にたどり着きます。 しかし、パソコンには購入時にすでにエクセルがインストールされていてOfficeやEXCEL単体のCDがありません。CDとしてあるのはドライバーCDとリカバリーCD(4枚)しかなく、一応CD-ROMを挿入して下さいという画面の時に読み込んでみましたが読めません。 このような状態だと追加インストールはできないのでしょうか。もしできるとすればどうすればよいのでしょうか。