- ベストアンサー
VBAの記述の仕方で
エクセルのVBAで、A1に Range("B1").Select という文字列を入力させたいのですが、以下の記述だといずれもエラーになってしまいます。 Cells(1, 1).Value = Range("B1").Select Cells(1, 1).Value = "Range("B1").Select" どこをどう直せばいいのでしょう?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ええと、まずお答えから。 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) というのを使うのです。 さらに & は、文字列の連結、という意味があります。 お試しあれ。
その他の回答 (1)
- lonlysheep
- ベストアンサー率56% (29/51)
これでいきませんか? Cells(1, 1).Value = "Range(""B1"").Select" もしくは、 Range("A1").Value = "Range(""B1"").Select"
お礼
回答ありがとうございました。 うまくいきました。 なぜそれでいいのかわからないですが(^^;
お礼
回答ありがとうございました。 うまくいきました。