プロが教えるわが家の防犯対策術!

VBAでExcel関数入力時のシングルクォーテーションについて教えてください。
VBAにてINDIRECT関数を指定する際、
Range("P2:P41").Formula = "=INDIRECT(" '"&B2&" '!$E$26")"
とすると、INDIRECT関数の途中がコメント扱いとなってしまいます。

今回は空白を含む文字列のシート名を参照する為、シングルクォーテーションが必要となります。

どなたか解決策などご教授いただけないでしょうか。

質問者からの補足コメント

  • うーん・・・

    コメントありがとうございます。
    セルにINDIRECT関数を入力したいのですが、Formulaを使うのはNGなのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/05/16 19:22
  • うーん・・・

    おはようございます。
    コメントありがとうございます。

    補足致します。
    今回は参照シートに空白文字を含むため、シングルクォーテーションを使用しております。
    情報頂きました書き方だと、『テ ス ト』の空白を含むシート名が参照できない状態となっております。

    宜しくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/05/17 08:26
  • うーん・・・

    コメントありがとうございます。
    おっしゃる通り、B2セルに空白含む文字列が入力されており、P2~P41セルに
    INDIRECT関数にてシート名として参照する関数をマクロにて入力したいのが目的となります。
    補足が少なく申し訳ありません。
    その場合のコードどのようにしたほうがよろしいでしょうか。
    ご教授お願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/05/19 08:52

A 回答 (5件)

もう解決しましたか?


全くの勘違いならすみません。

Range("P2:P41").Formula = "=INDIRECT(""'""&B2&""'!$E$26"")"
ではないですか?
    • good
    • 0

例えばB2セルに『テ ス ト』という空白を含む文字列が入力されている場合、その値をVBAのコードとして渡すためには、


・Range("B2").value
・cells(2,2).text
のようにしなければ、セルの内容をコードに渡すことはできません。
シートが複数ある場合、「B2セル」も複数存在することになりますので、誤作動を避けたいのであればシートも指定しておくことをお勧めします。

Sheets(”値が記入されたシート名”).Range("B2").value
    • good
    • 0
この回答へのお礼

返事が遅くなりました。
コメントありがとうございます。
No5さんの回答で無事解決いたしました。

お礼日時:2018/05/29 08:38

シングルクォーテーションを含む文字列をVBAコードとして認識させたいのであれば、chr(39)を使ってみてはどうでしょうか?


http://nobukoshi802.blogspot.jp/2011/02/ascii.html
または、シングルクォーテーションを”(ダブルクォーテーション)で囲めば(例:”’”)VBAコードとして認識します。

追伸
なんとなく「セルB2」に空白を含むシート名が記載されており、それを文字列としてVBAコードに渡したい感がみえますが、その時は「&B2&」ではないので注意してください。
この回答への補足あり
    • good
    • 0
この回答へのお礼

返事が遅くなりました。
コメントありがとうございます。
No5さんの回答で無事解決いたしました。

お礼日時:2018/05/29 08:39

こんばんは!



Range("P2:P41").Formula = "=INDIRECT(B2&""!$E$26"")"

としてみてください。m(_ _)m
この回答への補足あり
    • good
    • 0
この回答へのお礼

返事が遅くなりました。
コメントありがとうございます。
No5さんの回答で無事解決いたしました。

お礼日時:2018/05/29 08:39

シングルクォーテーション以前に書き方が間違ってる

この回答への補足あり
    • good
    • 0

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

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