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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qあまのじゃくってどういう意味ですか?

あまのじゃくってどういう意味ですか?

Aベストアンサー

かっこつけたり、恥ずかしがったりして、自分の感情や思いをうまく表現できないこと。天邪鬼。

参考URL:http://ja.wikipedia.org/wiki/%E3%81%82%E3%81%BE%E3%81%AE%E3%81%98%E3%82%83%E3%81%8F

Q実行時エラー'-2147467259(80004005)':

エクセルからADOでアクセスに繋ごうとしたときに
実行時エラー'-2147467259(80004005)':
マシン'マシン名'のユーザー'Admin'がデータベースを開けない状態、またはロックできない状態にしています。

というエラーが出てしまいます。

書いているコードは以下です。

Public cn As ADOdb.Connection
Set cn = New ADOdb.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"



test.mdb自体はテーブルもクエリもフォームも何も開いていない状態です。
一度アクセスを終了させて再起動させればうまくできるのですが、何が原因でこのメッセージが出るのでしょうか?
もしわかれば教えてください。
よろしくお願いします。

Aベストアンサー

Accessで、test.mdbを開いた状態(テーブルも、クエリも、フォームも何も開かない状態)で、ExcelからADOで接続しようとすると、
「-2147467259"は既に使用されているので、使用できませんでした。」
というエラーが再現されました。(当方Office2000Pro)
そういうものなのでしょう。
何をなさりたいのですか?
AccessからExcelを起動して、データの移し替えをしたり、レポート代わりに印刷させたりという方法ではダメなのでしょうか?
何をしたいかという、切り口で質問をされてはいかがですか。

Qどういう意味だと思いますか?

彼とLINEしていると
「返事がおくれてごめん、あまのじゃくなもので・・・」と
返事がありました。

たわいもないことをLINEでやりとりしているのですが

あまのじゃくになるというのは・・・
回答に困って返事が遅れるという意味でしょうか?

Aベストアンサー

返事が早かったり遅かったり、気まぐれだということじゃないですか?

遅れてごめんと謝ってくるところが全くあまのじゃくだとは思いませんけどね。

QVBAの実行時エラー'2522'について

前任者がAccess2003により作成したデータベースがあります。
CSVデータを取り込む仕組みがあるのですが、下記のエラーが出て困っています。

実行時エラー '2522':
このアクションまたはメソッドを実行するには[File Name/ファイル名]引数が必要です。

どうやらVBAによるエラーだと判明しましたが、それ以上はよくわかりません。
以下のような構文になっています。

Option Compare Database
----------
Private Sub CSV取込_Click()
TextConv strFileName, "マスター定義", "T_マスター"
End Sub
----------
Sub TextConv(strFle, strInp, strTbl)
Dim strSQL As String
strSQL = "DELETE * FROM " & strTbl
If MsgBox("テーブルデータを更新しますか?", 4, "テーブル更新") = vbYes Then
CurrentProject.Connection.Execute strSQL
DoCmd.TransferText acImportDelim, strInp, strTbl, strFle, True
MsgBox "テーブルデータを更新しました"
End If
End Sub
----------
Private Sub 参照_Click()
Dim strFileName As String
strFileName = GetFileName()
If Len(strFileName) > 0 Then
Me.filepath = strFileName
Else
MsgBox "取込対象ファイルを選択してください! "
End If
End Sub

以上のようになっています。
デバッグを実行すると「strFle」の値がEmptyになっているのでここだとは思うのですが、どうしたらよいかわかりません。
どなたかお知恵をお貸し願えませんでしょうか。
宜しくお願いします。

前任者がAccess2003により作成したデータベースがあります。
CSVデータを取り込む仕組みがあるのですが、下記のエラーが出て困っています。

実行時エラー '2522':
このアクションまたはメソッドを実行するには[File Name/ファイル名]引数が必要です。

どうやらVBAによるエラーだと判明しましたが、それ以上はよくわかりません。
以下のような構文になっています。

Option Compare Database
----------
Private Sub CSV取込_Click()
TextConv strFileName, "マスター定義", "T_マスター"
End ...続きを読む

Aベストアンサー

Private Sub CSV取込_Click()
  TextConv Me.filepath "マスター定義", "T_マスター"
End Sub
でしょうか?

> Option Compare Database
の次に
Option Explicit
を追加すると、このようなエラーは発見しやすくなります。

VBEの画面で
[ツール] - [オプション] - [編集]タブで
「変数の宣言を強制する」にチェックを入れると
新しく作成するモジュールでは
自動で「Option Explicit」が挿入されるようになります。

Q「あまのじゃく」に相当する英語は?

和英辞書を引いてみますと、色々な英語が出て来ます。
perverse or cussed person; contrarian とか。
それらの英語を逆引きすると、「つむじ曲がりの」とか「意固地な」とかの日本語になって、本来の日本語の意味の「あまのじゃく」に相当しません。

皆がこう言ったらいつも反対あるいは、別のことを言いたがる人。あるいは、何かが評判になったりして、多数の人がそこに殺到する時、その風潮に絶対に乗ろうとしない人。

私が捉えている「あまのじゃく」ですが、こんな性格の人は英米圏には殆んどいないから、それに相当する英語がないと言うことでしょうか?
もし、近い英語があれば教えて下さい。

宜しくお願いします。

Aベストアンサー

 yes-man, yes-sayer(はいはいと言うことを聞く人)の対義語、no-man, no-sayer(違う違うとごねる人)が近いだろうと思います。

QWord起動時のエラー「実行時エラー'5'」

実家のPCのエラーのご相談です。
あと1時間ほどで帰宅するのでその前にアドバイスをいただけると、、、

◆トラブル内容:

ワードを立ち上げようとすると
Microsoft Visual Basicのエラー表示がでます。
このエラーが出ないようにしたいのですが、
方法がわからず、お力添えをお願いします。

◆エラー内容:

実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。

終了およびヘルプボタンのみ有効です。
ヘルプボタンを押すとヘルプの該当項目が表示されます。


◆ヘルプの内容:

プロシージャの呼び出し、または引数が不正です。(Error 5)
呼び出しの一部が完成できません。エラーの原因と対処方法を次に示します。

引数が許容値の範囲を超えている可能性があります。たとえば、Sin 関数で扱える値の範囲は決まっています。2,147,483,648 未満の値は有効ですが、2,147,483,648 ではエラーになります。
引数に指定できる値の範囲を確認します。

現在のプラットフォームで無効のプロシージャを呼び出そうとするときにも、このエラーが発生します。たとえば、Microsoft Windows または Macintosh のみで使用できるプロシージャなどがあります。
プロシージャについてのプラットフォーム固有の情報を確認します。

詳細については、目的の項目を選択して F1 キー (Windows) または Help キー (Macintosh) を押してください。

                          以上コピペ終わり


マクロで見たことのあるエラー表示ですが、エクセルマクロでは
デバッグで凌いだり、不要なマクロはモジュールの解放等と、多少の
対処法を学んだのですが、ワードマクロはまったく未経験でヘルプの内容も
理解出来ません。

親孝行の真似事でも出来れば、と質問致しました。
御力添えをお願いします。

実家のPCのエラーのご相談です。
あと1時間ほどで帰宅するのでその前にアドバイスをいただけると、、、

◆トラブル内容:

ワードを立ち上げようとすると
Microsoft Visual Basicのエラー表示がでます。
このエラーが出ないようにしたいのですが、
方法がわからず、お力添えをお願いします。

◆エラー内容:

実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。

終了およびヘルプボタンのみ有効です。
ヘルプボタンを押すとヘルプの該当項目が表示されます。


◆ヘルプ...続きを読む

Aベストアンサー

これ・・・でしょうか?
http://support.microsoft.com/kb/267572/ja

Qあまのじゃくな男性

中学生男子に
あまのじゃくな人は結構いますか?

あと中学生男子は
普通に女子の肩に触れたりは
するもんですか?

回答お願いします(*´∇`*)

Aベストアンサー

中学生はあまのじゃくが多い年代でしょう。

女の子に対し興味が無いようなふりをしたり、悪態をついたり。

肩に触れるのはある程度親しいしるしだと思います。

Q実行時エラー'424' オブジェクトが必要です???

いつもお世話になっております。
プロシージャに下記のように記入しましたところ、
表題の「実行時エラー'424' オブジェクトが必要です」と出てしまいます。小生独学の初心者です。よろしくご指南ください。

前略~
Dim sh1 As Worksheet
Set sh1 = Active.Worksheet
~後略

Aベストアンサー

[Active.Worksheet]とは書きません。

Set sh1 = ActiveSheet

Qあまのじゃく・・・

なんとなく、あまのじゃくな性格です。
この性格ってどうしてこうなるの?
解決する方法とかありますか?

Aベストアンサー

同じくあまのじゃくです(笑)
#1さんのおっしゃること、確かに当たってるような気が・・・。
私は最近は、思わず言い返してしまっても
後で家に帰ってから反省をするようにしています(笑)
あまり役に立つか分かりませんが
参考程度に読んでおいていただけるとありがたいです。

Q実行時エラー '3464': 抽出条件でデータ型が

フォームにフィルタをかけようとすると
実行時エラー '3464': 抽出条件でデータ型が一致しません。

になります。

Private Sub Form_Load()
Me.Form.Filter = "フィールド1 =200"
Me.Form.FilterOn = True
End Sub

コードはこれです。
フィールド1はテキスト型です。
何がダメなのでしょう?

Aベストアンサー

Me.Form.Filter = "フィールド1 =200"

Me.Form.Filter = "フィールド1 ='200'"
に変更してください。
フィールドのデータ型によって
テキスト型→ ' で括る
日付/時刻型→ # で括る
数値型 → 何も括らない。
と合わせる必要があります。


人気Q&Aランキング