質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

3回答

3503閲覧

VBAのコンパイルの仕組みが知りたい

minyouyuu

総合スコア39

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/10/01 12:43

VBAの仕組みについて質問です。

Accessでボタンを作り、ボタンが押すとVBAが呼び出されて処理をする機能を作りました。

すると、作成したボタンの処理ではない処理でエラーが発生しました。
「このプロジェクトのコードは、64ビットシステムで使用するために更新する必要があります。
Declareステートメントの確認および更新を行い、次にDeclareステートメントに PtrSafe 属性を設定してください。」というエラーです。

ボタンを押しただけなので、ボタンの処理に問題がなければ、他の処理に問題があってもエラーは出力されないと思っていたのですが、VBAでは、コードの実行前にコード全てに異常がないかのチェックを行っているのでしょうか?

ちなみに、エラー自体は解消できております。VBAの仕組み自体が知りたいです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ad.sys.soleil

2020/10/02 02:52

32ビットで作ったAccessファイルを、64ビットのAccessソフトで動かそうとしていませんか?
guest

回答3

0

だいぶ古い記事ですか、下記が参考になりそうです。

VBAはインタプリタ?コンパイラ?


エラーには構文エラーと、実行時エラーがあります。

実行時エラーは、コード自体に間違いはないが、処理に矛盾などがあるときに発生します。

構文エラーは、コード自体に間違いがある状態です。これがあるとコンパイル(Pコードへの翻訳)ができないので別の処理を実行したときでも発生します。

デバッグ→コンパイルで明示的にコンパイルできて、その時に構文チェックしますが、これをせずに構文エラーがある状態で初めてVBAを実行するとその時に自動的にコンパイルされてから実行されます。すると、構文エラーが発生します。

64bit Office ではAPI宣言にPtrSafeを付けないのは構文エラーです。

投稿2020/10/01 12:52

編集2020/10/01 13:18
hatena19

総合スコア34084

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBAでは、コードの実行前にコード全てに異常がないかのチェックを行っているのでしょうか?

いいえ。
「メニュー→デバッグ→コンパイル」とした時だけ、コード全てがチェックされます。
Tips13: VBA は、インタープリタか? コンパイラか?※古い記事ですけど興味があれば。

作成したボタンの処理ではない処理でエラーが発生しました。

実行時に発生するのは、実行する部分に関するエラーのみであり、全コードが対象ではありません。
多分ボタンの処理でエラーが発生した処理が呼び出されるようなイベントが発生したのではいかと思います。
実行されないコードでエラーが発生する事はありませんから。

投稿2020/10/01 13:04

編集2020/10/01 15:39
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/10/01 13:14

リンク先の記事に下記の記述があります。 「p-codeへのコンパイルは、最初にそのコードを実行する時、またはデバックメニュー の[コンパイル]をクリックした時に行なわれます。」
sazi

2020/10/01 15:38

コンパイルする/しないではなくて、その範囲についての記述にしました。
guest

0

コンパイルという言葉をご存知であれば、「他の処理に問題があってもエラーは出力されないと思っていた」のが不思議なんですが。

普通はコンパイルという作業をする際に各種のエラーチェックが行われます。

Visual Basic for Applications - Wikipediaによれば、

VBAは疑似コード (Pコード) ベースのコンパイラ型およびインタプリタ型両方の性質を持っており[1]、ユーザーが記述したソースコードを1アクションで自動的に疑似コードにコンパイルして直接コンピュータに実行させることができる。

とのことなので、この擬似コードへの変換をかける際にエラーチェックが行われているのは極めて自然なことだと思いますが。

VBAの仕組み自体が知りたいです。

どのレベルの話でしょうか。
コードが実行されるまでに何が起きているのかは上記Wikipediaの記事に書かれているとおりですし、もっと詳しい内容が知りたいのであれば、ここの回答欄で教えてくれ、というのは無理があると思いますけど。

投稿2020/10/01 12:55

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問