- ベストアンサー
クオーテーションの入力方法
- クオーテーションの入力方法について教えてください
- 「Rst.FindFirst "名称コード" & " = " & "' 101 '"」という記述で、半角AでShift+2("), Shift+7(')を入力すると正しいクオーテーションが入力できない問題が発生します
- 「"'」のようにクオーテーションを正しく入力する方法を教えてください
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#1です。再度。 > 「Rst.FindFirst "名称コード" & " = " & "' 101 "'」という記述 そもそもこの記述は何かを参考になさってるのでしょうか。 このサイトへの転記ミスかお尋ねした部分が補足では確定してない。 転記ミスでは無いなら参考にした「何か」そのものの誤記ではありませんか? Rst.FindFirst に続く右側(引数)ですが 必要としている条件を記述する部分です。 質問文からは「名称コードが値[101]に等しいもの」と読めます。 (101の前後に半角スペースがあるのが気になりますが) 新たな疑問ですが、「名称コード」のデータ型は何ですか? 値そのものをクォーテーションで囲もうとしているからには 文字型(=テキスト型)で合ってますか? 「いや、数値型でした」だったら 条件のために値101をクォーテーションで囲む必要はなく、 VBAのコード記述のためにダブルクォーテーションで囲むだけなので Rst.FindFirst "名称コード" & " = " & "101” になります。 「はい、文字型です」なら、「クォーテーションで囲むこと」は 必要ですが、囲む文字のルールがあります。 クォーテーションとして使えるのは 「’」シングルクォーテーション(アポストロフィ)か 「”」ダブルクォーテーション のどちらか。 (他は割愛) シングル・ダブル何れの場合も「値の両端を同じもので囲む」ので 引数は「名称コード = ’101’」か「名称コード = "101”」の どちらかになります。 ところが質問で「入力できない」とおっしゃってる >「Rst.FindFirst "名称コード" & " = " & "' 101 "'」 では、両端を囲おうとしているのは「”(Shift+2)’(Shift+7) で囲む」ですから もし記述できたとしても実行時にはエラーになります。 動作確認をしてみて下さい。 シングルでなら >「Rst.FindFirst "名称コード" & " = " & "' 101 "'」 を Rst.FindFirst "名称コード" & " = " & "'101'” へ変更し実行。 「ダブルクォーテーションで囲いたい亅にこだわるなら 101の両端を”(Shift+7)×3で囲って Rst.FindFirst "名称コード" & " = " & ”””101””” と変更し実行してみて下さい。 「文字列中に”を記述するには”を2回続ける」という VBAのルールがあります。 最後の&に続く9文字は 1~1 文字列記述の始まりの” 2~3 文字列中に”を表すための”” 4~6 値101 7~8 文字列中に”を表すための”” 9~9 文字列記述の終りの” で。 最後にもう一度 成し遂げたいことは 「”’101”’」(Shift+2、Shift+7、101、Shift+2、Shift+7)にこだわること なのか VBAを実行できるようにすること のどちらなのでしょうか?
その他の回答 (6)
- notnot
- ベストアンサー率47% (4901/10362)
>「回答2」さんの指摘と同じですね、そのようにキーボードから入力した結果が、 同一人物です。 >回答2さんへの「補足コメント」になります。 どこかでタイプミスをしてますので、注意深く、書いたとおりに入力してください。
補足
有難うございます。指摘されたとおりに何回も試してみました。
- kmee
- ベストアンサー率55% (1857/3366)
> この質問ページでは「"'」と入力出来ます それは、表示されているフォントがそう見えるだけです。 メモ帳を開いて、 この質問をコピー → メモ帳にペースト としてみてください。 VBAと同じ文字になりませんか? プログラムが見るのは、「どの文字」かであって、「どんな風に見えるか」ではありません。 名前コード='101' という文字列を、 名前コード = '101' に分割します。それぞれをVBAの文字列にするためにダブルクォートでくくって "名前コード" "=" "'101'" にします。これを & で連結しなおすと "名前コード" & "=" & "'101'" になります。 入力したいのは、上のものではないですか? 最後が ' " の順になっていることに注意してください。 また、そのサンプルは「101」のかわりに変数 pName を使いたいので、 ' 変数pName ' を連結したい、そこで、 ' を"'"とくくってVBAの文字列にして、それを連結した "'" & pName "'" となっている。あるいは、前後に別の文字列が入っていて "前の文字列の続き '" & pName "' 後に文字列が続く" となっているものでは? > キーボードから入力した結果が、回答2さんへの「補足コメント」になります。 本当に、指定した順番に入力しましたか? それなら、 最後は Shift-7 Shift-2 で ' " となり、最後が ' になるはずは絶対に無いのですが。
補足
度々で申し訳ありません。指定した順番で何回も試してみました。
- notnot
- ベストアンサー率47% (4901/10362)
>「'''」の入力以外に問題があるのでしょうか? そもそも、文法というか記法の理解が出来ていません。 " (Shift+2) は、文字列定数を囲むものです。' (Shift+7) はコメントの始まりです。 " は、「ダブルクォーテーションマーク」「ダブルクォート」「引用符」などと言います。 ' は、「シングルクォーテーションマーク」「シングルクォート」「アポストロフィ」と言います。カンマ( , )が上にずれた形をしています。英語の isn't とかに出てくる記号。 Rst.FindFirst "名称コード" & " = " & "' 101 '" は、下記のように入れてください。 Rst.FindFirst Shift+2 名称コード Shift+2 & Shift+2 = Shift+2 & Shift+2 Shift+7 101 Shift+7 Shift+2
補足
回答を有難うございます。「下記のように入れてください。」の10行目から最後までは、 「回答2」さんの指摘と同じですね、そのようにキーボードから入力した結果が、回答2さんへの「補足コメント」になります。
- ahoo_chieokure
- ベストアンサー率52% (34/65)
釣れていますね! このページのスタイルシートのフォント部分は次の通り: body { font-family: arial,'ヒラギノ角ゴ Pro W3','Hiragino Kaku Gothic Pro','メイリオ',Meiryo,sans-serif; line-height: 1.2; letter-spacing: 0;} 従ってブラウザの文字サイズにもよるが「過去の質問を閲覧してい」ると「"'」とりぷるクオーテーションという一文字に見えるけど、 VBAのエディタ上では等幅フォントを使っているのでダブルクオーテーション+シングルクオーテーションの2文字に見えるという2chネタ トリプルクオーテーションなんか有りませんというのが正解。 意味があるとは思えないがVBAのエディタのフォントをArialかつ等幅表示以外ににする事ができれば2文字が詰まって一文字にみえるんじゃないの?
- notnot
- ベストアンサー率47% (4901/10362)
すでにある回答の通りですが、「"' 101 "' と入力したい」というのは間違いで、"' 101 '" と入力してください。つまり、Shift+2 Shift+7 101 Shift+7 Shift+2 と入力するのが正しいのです。 "' 101 "' と入力すると、2つめの " が文字列の終わりとなり、最後の ' がコメントの始まりとなり、それはお望みの物では無いはずです。 そう入力してしまうと、"' 101 " ' と1つスペースが空いて、 ' の文字の色が変わります。
補足
回答を有難うございます。早速「Microsoft Visual Basic for Applications」で、ご指摘の通りに入力し「End Sub」しますと、「"' 101 " ' と1つスペースが空いて、 ' の文字の色が変わります。」との指摘ですが「'' ' 101 '''」とスペースが前の方の「'''」に生じてしまいます。(「'''」の3番目の「'」は最初の「質問文」に記した通りセミコロンの下部分の「オタマジャクシ」の様な記号で表示されています。)サンプルコードで「''' & pName & '''」とした場合も同じけっかです。文字の色は変わっています。実行してみると、構文エラー とのメッセージが表示され実行出来ませんでした。 「'''」の入力以外に問題があるのでしょうか?
- bin-chan
- ベストアンサー率33% (1403/4213)
”名称コード = ’101’”という文字列が必要なんですね? > 「Rst.FindFirst "名称コード" & " = " & "' 101 "'」という記述 末尾の ” と ’ の順序が逆 Rst.FindFirst "名称コード" & " = " & "' 101 ’”が正しいと思います。 単にここへの転記の際のミスで、 真に「キーボードからの入力がおかしい」のなら、ごめんなさい
補足
早速の回答を有難うございます。私の質問が支離滅裂になってしまい、申し訳ありません。要するに「'''」をキーボードから、どの様に入力するのか?と言う事です。 改めて、宜しくお願い致します。
補足
度々の回答を有難うございます。かなり専門的になってきてしまいましたが、私の知りたいことは「質問」の表題に有りますように「クオーテーションの入力方法」ただその一点です。それがどんな意味になるのかは、今の私にとって「次のステップ」です。「Rst.-----」も、同じような質問が無いか、当サイトの「過去の質問」を「閲覧」していてたまたま見かけたものを引用させてもらっただけです。その意味では「回答NO3」の方の、「トリプルクオーテーションなんか有りませんというのが正解。」が一番納得した回答でした。勉強します。本当にお手数を頂き有難うございました。