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