4

Excel 2003 と Excel 2007 の両方で実行する必要があるコードがあり、バージョンの変更によってコードが停止する箇所がいくつかあります。これらの行を If-Else ステートメントで区切ってみましたが、コードはどちらでもコンパイルされません。これは、もう一方に使用されているコードが認識されないためです。VBA で C または C++ スタイルの #ifdef と同様に、1 つのバージョンにコード ブロックを無視するように指示する方法はありますか?

4

3 に答える 3

2

はい、Excel VBA で条件付きコンパイルを行うことは可能です。以下は簡単なリソースとサンプルコードです: 条件付きコンパイル

#If Win32 Then
    ' Profile String functions:
    Private Declare Function WritePrivateProfileString Lib "KERNEL32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileString Lib "KERNEL32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpDefault As Any, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
#Else
    ' Profile String functions:
    Private Declare Function WritePrivateProfileString Lib "Kernel" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Integer
    Private Declare Function GetPrivateProfileString Lib "Kernel" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As Any, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
#End If
于 2009-05-29T15:55:05.307 に答える
0

問題のあるコード行を投稿できますか?

vbYes や xlFileFormat などの定数の場合は、対応する数値を使用します。

あなたが得たものを見せてください。リファクタリングできるかどうか見てみましょう。

明細書

于 2009-05-31T18:26:28.697 に答える