• ベストアンサー

VBAの記述の仕方で

エクセルのVBAで、A1に Range("B1").Select という文字列を入力させたいのですが、以下の記述だといずれもエラーになってしまいます。 Cells(1, 1).Value = Range("B1").Select   Cells(1, 1).Value = "Range("B1").Select"   どこをどう直せばいいのでしょう?

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

  • ベストアンサー
  • vbalab
  • ベストアンサー率48% (24/50)
回答No.1

ええと、まずお答えから。 Cells(1, 1).Value = "Range(" & Chr(34) & "B1" & Chr(34) & ").Select" が正解です。 Cells(1, 1).Value = Range("B1").Select   だと、右辺が「セルB1を選択しなさい」という、VBAの文法になってしまいます。 これをそのまま読むと、「セルB1を選択しなさいをセルA1に代入しなさい」というわけのわからない意味になってしまうので、エラーとなるわけです。 Cells(1, 1).Value = "Range("B1").Select"   こっちはおしいんですがね。よく見ると、ダブルクオーテーションがたくさんありますね。 分解してみましょう。 Cells(1, 1).Value = "Range("  B1   ").Select"   Cells(1, 1).Value = "Range(" までは有効な文法です。しかしその後に、B1 と書かれている、なんじゃこれ?となるわけです。つまり、ダブルクオーテーションによる「文字列の区切り」が、わけのわからない状態を生み出しているわけです。 ダブルクオーテーション「”」は、アスキーコードの34番です。ダブルクオーテーションのかわりに、 ” を意味する Chr(34) というのを使うのです。 さらに & は、文字列の連結、という意味があります。 お試しあれ。

terch
質問者

お礼

回答ありがとうございました。 うまくいきました。

その他の回答 (1)

回答No.2

これでいきませんか? Cells(1, 1).Value = "Range(""B1"").Select" もしくは、 Range("A1").Value = "Range(""B1"").Select"

terch
質問者

お礼

回答ありがとうございました。 うまくいきました。 なぜそれでいいのかわからないですが(^^;

関連するQ&A

専門家に質問してみよう