• ベストアンサー

アクセスVBAについて教えてください

都道府県はコントロールです。 Me.Filter = "都道府県 = '東京都'" このときの、シングルコーテーションとダブルコーテーションの意味を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

VBA中では、文字列はダブルコーテーションで括ります。 で、今回の例では、文字列が入れ子状態になってるんですよ。 Me.Filterに対して、「都道府県 = '東京都'」と言う文字列を渡しているわけです。 で、「都道府県 = '東京都'」ですが、これもまた「[都道府県]フィールドに『東京都』という文字列が入っているもの」という意味ですよね。 ダブルコーテーションで括った文字列の内側でも、再び文字列の部分を括る為の記号が必要で、そのためにシングルコーテーションを使っているわけです。 内側の部分までダブルで括ってしまうとと、「何処から何処までが文字列なのか」があやふやになってしまいます。 Me.Filter = "都道府県 = "東京都"" ってな具合に書いたとして、「文字列とは、ダブルコーテーションで囲まれた範囲である。どの部分が文字列か?」って問われても、色んな解釈が出来てしまって、分からないでしょう(笑)。 Me.Filter = "都道府県 = '東京都'" だったら、Me.Filterに渡しているのが「都道府県 = '東京都'」という文字列であるっていうことが一目でわかります。 尚、無理矢理「"」をダブルコーテーションの内側に入れる方法もあります。 Me.Filter = "都道府県 = ""東京都""" とか、 Me.Filter = "都道府県 = " & chr$(34) & "東京都" & chr$(34) などと書くと、Me.Filterに対して「都道府県 = "東京都"」っていう文字列を渡したことになります。 試してみると分かりますが、こちらでも正常に動作します。 シングルとダブルの違いですが、 ○VBA中では文字列はダブルで括る。シングルで括ることは認められない。 ○フィルタなどに渡すパラメータの内部では、文字列を括るのにシングルを使ってもダブルを使ってもいい。が、ダブルを使うと見難くなるので、シングルを推奨。 といったところでしょうか。

その他の回答 (1)

  • Yackn
  • ベストアンサー率42% (12/28)
回答No.1

SQL文は分かりますか? ヘルプに乗っているとおりFilterプロパティはWhere句から下の「文字列」です。文字列なのでダブルクォートで囲みますよね。 また、この例の場合、都道府県フィールドは文字型のためSQL文の上でも何らかで囲んであげる必要がありますね。 そこですでにダブルクォートは使っているのでシングルクォートで代用してあげているだけです。 例をあげますと 都道府県 = "東京" and 名前 Like "山%" and 年齢 = 30 を導入するときは ME.FILTER = "都道府県 = '東京' and 名前 Like '山%' and 年齢 = 30" なんて風に書きます。 まとめますと 「"」vba文字列としてのくくり 「'」SQL文字列としてのくくり ということになります。 こんなもんでよろしいでしょうか?

関連するQ&A

  • アクセスVBAについて教えてください。

    Private Sub Form_ApplyFilter If ApplyType = acShowAllRecords Then フィルタオプション = 1 ElseIf Filter <> “都道府県 = ‘東京都’” Then フィルタオプション = Null End if End Sub アクセスVBAの次の2行について教えてください。 よろしくお願いします。 ApplyType = acShowAllRecords ElseIf Filter <> “都道府県 = ‘東京都’” Then

  • アクセスVBAについて教えてください。

    アクセスVBAで KeyDown イベントに下記のプロシージャを書きました。 If KeyCode = 49 And Shift = 2 Then 都道府県 = “東京都” End If KeyCode = 49はキーボードの 「1」ということがヘルプのkeycodeの定数表より、 Vbkey1をイミディエトウィンドで調べることによりわかりました。 ?vbkey1 49 Shift = 2 はキーボードのの 「ctrl」のことみたいですが、「ALT」「shift」を指定したい場合の引数は何を入れればよいでしょうか。また、ヘルプで参照になるページがあれば教えてください。 それと vbkey の意味を教えてください。

  • 直接話法で使うクォーテーションマーク

    直接話法で使うクォーテーションマークですが、 私は今までダブルクォーテーションを使っていたのですが、 シングルクォーテーションで括ってあるものを見ました。 直接話法で使うクォーテーションマークは シングルでもダブルでもどちらでもよいのでしょうか。

  • 文字列を括る時は、”” or ’’ ?

    エクセル2003のVBAでADOを使ってるのですが 「テキスト・文字列を括る場合はダブルコーテーション」と習ったのですが http://www.geocities.jp/cbc_vbnet/ADO/filter.html を見てると 「テキスト型のフィールド・変数はシングルコーテーションで囲みます」と記載されています。 なぜダブルコーテションじゃなくなってしまったのでしょうか? 頭が混乱しています。 ADOを使う時は特別なのですか? ご回答よろしくお願いします。

  • アクセスで3つのフィルターを連携させたい

    3つのコンボックスがあります Combo1 → 都道府県 Combo2 → 市区 Combo3 → 町村 都道府県と市区までは正常にフィルター出来るのですが、町村を選ぶと都道府県や市区も 同じ町村の名前のデータを引っ張ってきてしまいます。 ボタンを付けることも考えましたが、VBAの能力があまりないので、失敗ばかりしています。 良い知恵を教えて頂けないでしょうか。 Private Sub Combo1_AfterUpdate() Dim Strkubun As String Strkubun = Me.Combo1 Me.Filter = "[都道府県]= '" & Strkubun & "'" Me.FilterOn = True Me.Requery End Sub Private Sub Combo2_AfterUpdate() Dim Strkubun As String Strkubun = Me.Combo2 Me.Filter = "[市区]= '" & Strkubun & "'" Me.FilterOn = True Me.Requery End Sub Private Sub Combo3_AfterUpdate() Dim Strkubun As String Strkubun = Me.Combo3 Me.Filter = "[町村]= '" & Strkubun & "'" Me.FilterOn = True Me.Refresh End Sub

  • phpの<br>\nと\nとエスケープシーケンスについて

    現在、phpを学んでいるのですが、いきなり"<br>\n"と"\n"の違いがわからなくて困っています。\nはエスケープシーケンスで改行を意味するのですよね?<br>も改行を意味するから・・・わざわざダブルクォーテーションの中に<br>を書かなくても良いのでは・・・ と思うのですが・・・違うのでしょうか!? またエスケープシーケンスについてなのですが、 ¥を付けて表す特殊文字がエスケープシーケンスなのですね。 しかし、シングルクォーテーション内では「¥’」と「\\」だけが使える。 ダブルクォーテーション内では記述すると画面に表示されないということですが・・・。 ではエスケープシーケンスっていつ使うのですか?使い道がないような気がするのですが・・・・。 使えるのは、シングルクォーテーション内の「¥’」と「\\」だけになるのでは・・・・。 そのへんのところを教えてください。

    • ベストアンサー
    • PHP
  • シングルクォーテーションとダブルクォーテーション

    いつも楽しく拝見させて頂いています。 初心者ですが宜しくお願いします。 シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。 select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。 以上宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 引用符(コーテーション)が勝手に半角になる

    Word2000(SR-1)で、引用符(ダブルコーテーション→”)を入力した文書を印刷すると、勝手に全角のシングルコーテーション2個に置き換わって印刷されてしまうPCがあって、困ってます。 ここで意味している内容は、ツール-オートコレクトで入力オートフォーマットタブの中にある、‘‘を‘’に変更するということでもありませんし、かっこを正しく組み合わせるという意味でも有りません。 入力した文字を見ると確かに、全角のダブルコーテーションなのですが、これを印刷すると、シングルコーテーション2個に置き換わってしまうという現象です。 どなたか、同じ現象に遭遇された方で、対処方法をご存知の方がいらっしゃいましたら、回答願います。

  • 記号の読み方について(`)

    ”←ダブルコーテーション ’←シングルコーテーション `←この記号なんと読めばよいのでしょうか。。。

  • Wind ― a 'New' Power

    教科書に, Wind ― a 'New' Power  というタイトルがあります。 この単元の内容は,宮古島の風力発電についてです。 'New' のシングルコーテーションの意味がわかりません。 (1)ダッシュは,前の語windを後ろの語句が説明している。いいですか? (2)なぜシングルコーテーションなのでしょうか?Newの語の意味を強めるのなら,ダブルでいいと思うのですが,なぜこうなっているのでしょうか?ひょっとして,ダッシュの後ろの語句内での引用符は,ダブルではなく,シングルとかいう決まりでもあるのでしょうか?

専門家に質問してみよう