Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10540 / 76734 ←次へ | 前へ→

【71740】Re:Ptrsafeについて
発言  UO3  - 12/4/5(木) 5:42 -

引用なし
パスワード
   ▼亜矢 さん:

おはようございます

条件付きコンパイルで検索しますと、たくさんの説明ページがありますが
VBAに限らず、様々な言語での一般論も多く、混乱されるかもしれません。

まず、我々が書いたVBAコードはコンパイラーというもので実行前に
実際に実行できるコードに変換しています。
コードに明らかな間違いがあったときに、その入力時にエラー表示されることがありますね。
コードが赤くなったり、メッセージがでたり。実行前なのに。
これは、コンパイラーが実行可能なコードに変換しようとして、
おかしいよと我々に教えてくれています。

以下の例、最初は亜矢さんも、よくご存じのコードですね。
条件を判定しながら「実行」が分岐されますね。
で、実際にコードも4行生成されます。

If ○○○ Then
   ○○○の処理コード ★1
Else
   □□□の処理コード ★2
End If

よくにていますが、以下では If なんかの前に # がついています。

#If Win64 Then
   64ビット版のコード ★3
#Else
   32ビット版のコード ★4
#End If

こうしますと、目でみると、4行のコードですが、実は、実行前にVBAコンパイラーが
実行用のコードを生成する際に、64ビット版PCなら★3 だけを
32ビット版PCなら★4だけを生成してくれます。
つまり実際に生成されるコードは いずれかの 1行だけになります。

つまり、同じマクロブックを32ビット版PCでも64ビット版PCでも
いずれでも使えるということになります。

Win64 というのは 64ビット環境という意味を持つ定数です。

以下では、本件に関するAPIの記述に関して、わりあい、わかりやすく、書かれています。
www.ka-net.org/office/of30.html
7 hits

【71737】Ptrsafeについて 亜矢 12/4/4(水) 19:51 質問
【71738】Re:Ptrsafeについて とおりすぎ 12/4/4(水) 22:35 回答
【71739】Re:Ptrsafeについて 亜矢 12/4/5(木) 4:36 質問
【71740】Re:Ptrsafeについて UO3 12/4/5(木) 5:42 発言
【71741】Re:Ptrsafeについて 亜矢 12/4/5(木) 8:09 質問
【71742】Re:Ptrsafeについて とおりすぎ 12/4/5(木) 9:11 回答
【71745】Re:Ptrsafeについて UO3 12/4/5(木) 13:27 発言
【71748】Re:Ptrsafeについて 亜矢 12/4/5(木) 15:42 お礼
【71815】Re:Ptrsafeについて 亜矢 12/4/11(水) 17:17 お礼

10540 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free