連結される文字列を記述する場合に、文字列の中に別の文字列を指定したり、文字列の中に文字列変数を指定することが必要な場合があります。 文字列を別の文字列の中にネストするのは次のような場合です。
定義域集計関数で抽出条件を指定する場合
Find 系メソッドで抽出条件を指定する場合
フォームの Filter プロパティまたは ServerFilter プロパティの条件を指定する場合。
SQL 文字列を記述する場合
上のどの場合でも、文字列は Access データベース エンジンに渡されます。 たとえば、定義域集計関数に引数 criteria を指定した場合、Access によって各変数が評価され、これらが 1 つの文字列に連結されてから、抽出条件の文字列全体が Access データベース エンジンに渡されます。
数値変数を指定した場合は、変数が評価され、その値が単純に文字列に連結されます。 しかし、変数が文字列の場合、得られる抽出条件の文字列では、文字列の中に文字列が含まれています。 文字列の中の文字列は、文字列区切り記号で識別する必要があります。 このようにしないと、Access データベース エンジンは、文字列のどの部分が使用する値なのかを判断できません。
文字列の区切り記号は、変数の一部ではありませんが、引数 criteria を形成する文字列に含める必要があります。 引数 criteria に文字列を記述するには、3 とおりの方法があります。 どの方法でも、次のどちらかの形式の引数 criteria が作成されることになります。
"[LastName] = 'Smith'"
"[LastName] = ""Smith"""
単一引用符を含める
変数の値を文字列に連結すると、単一引用符で囲まれるように、 引数 criteria に単一引用符を含める必要があります。 たとえば、 criteria 引数に という strName
文字列変数が含まれている必要があるとします。 たとえば、引数 criteria は次のように記述できます。
"[LastName] = '" & strName & "'"
変数 strName
が評価され、 条件 文字列に連結されると、 条件 文字列は次のようになります。
"[LastName] = 'Smith'"
注:
この構文の場合、変数の値の中で一重引用符を使用することはできません。 文字列変数の値に一重引用符が含まれていると、実行時エラーが発生します。 変数の値に一重引用符が含まれる場合は、以下に説明する別の構文を使用してください。
二重引用符を含める
変数の値が評価されたときにニ重引用符で囲まれるようにするには、引数 criteria にニ重引用符を含めます。 文字列の中では、2 つの連続するニ重引用符を使って、1 つのニ重引用符を表す必要があります。 たとえば、引数 criteria は次のように記述できます。
"[LastName] = """ & strName & """"
変数 strName
が評価され、 criteria 引数に連結されると、2 つの二重引用符の各セットが 1 つの単一引用符で置き換えられます。 このため、引数 criteria は次のようになります。
"[LastName] = 'Smith'"
この構文は一重引用符の構文よりも複雑に見えますが、この構文を使うと、ニ重引用符を含む文字列も引数 criteria に指定できます。 また、文字列の中に 1 つまたは複数の文字列をネストすることもできます。
引用符を表す変数を含める
ニ重引用符を表す文字列変数を作成し、この変数を、他の変数の値と共に引数 criteria に連結できます。 二重引用符の ANSI 表現は です。 Chr$(34)
この値を という strQuote
文字列変数に割り当てることができます。 この値を文字列変数に代入すると、引数 criteria は次のように記述できます。
"[LastName] = " & strQuote & strName & strQuote
変数が評価され、引数 criteria に連結されると、引数 criteria は次のようになります。
[LastName] = "Smith"
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。