|    | 
     ▼亜矢 さん: 
 
おはようございます 
 
条件付きコンパイルで検索しますと、たくさんの説明ページがありますが 
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 
 
 | 
     
    
   |