アプリ版:「スタンプのみでお礼する」機能のリリースについて

都道府県はコントロールです。

Me.Filter = "都道府県 = '東京都'"

このときの、シングルコーテーションとダブルコーテーションの意味を教えてください。

A 回答 (2件)

VBA中では、文字列はダブルコーテーションで括ります。


で、今回の例では、文字列が入れ子状態になってるんですよ。


Me.Filterに対して、「都道府県 = '東京都'」と言う文字列を渡しているわけです。
で、「都道府県 = '東京都'」ですが、これもまた「[都道府県]フィールドに『東京都』という文字列が入っているもの」という意味ですよね。

ダブルコーテーションで括った文字列の内側でも、再び文字列の部分を括る為の記号が必要で、そのためにシングルコーテーションを使っているわけです。

内側の部分までダブルで括ってしまうとと、「何処から何処までが文字列なのか」があやふやになってしまいます。

Me.Filter = "都道府県 = "東京都""
ってな具合に書いたとして、「文字列とは、ダブルコーテーションで囲まれた範囲である。どの部分が文字列か?」って問われても、色んな解釈が出来てしまって、分からないでしょう(笑)。

Me.Filter = "都道府県 = '東京都'"
だったら、Me.Filterに渡しているのが「都道府県 = '東京都'」という文字列であるっていうことが一目でわかります。


尚、無理矢理「"」をダブルコーテーションの内側に入れる方法もあります。
Me.Filter = "都道府県 = ""東京都"""
とか、
Me.Filter = "都道府県 = " & chr$(34) & "東京都" & chr$(34)
などと書くと、Me.Filterに対して「都道府県 = "東京都"」っていう文字列を渡したことになります。
試してみると分かりますが、こちらでも正常に動作します。


シングルとダブルの違いですが、
○VBA中では文字列はダブルで括る。シングルで括ることは認められない。
○フィルタなどに渡すパラメータの内部では、文字列を括るのにシングルを使ってもダブルを使ってもいい。が、ダブルを使うと見難くなるので、シングルを推奨。
といったところでしょうか。
    • good
    • 0

SQL文は分かりますか?


ヘルプに乗っているとおりFilterプロパティはWhere句から下の「文字列」です。文字列なのでダブルクォートで囲みますよね。
また、この例の場合、都道府県フィールドは文字型のためSQL文の上でも何らかで囲んであげる必要がありますね。
そこですでにダブルクォートは使っているのでシングルクォートで代用してあげているだけです。

例をあげますと
都道府県 = "東京" and 名前 Like "山%" and 年齢 = 30
を導入するときは
ME.FILTER = "都道府県 = '東京' and 名前 Like '山%' and 年齢 = 30"
なんて風に書きます。

まとめますと
「"」vba文字列としてのくくり
「'」SQL文字列としてのくくり
ということになります。

こんなもんでよろしいでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!