- ベストアンサー
Range("****")の****部分を変数にできますか?
エクセルでVBAを勉強中の初心者です。 今、配列data(row,col)に番地B17が読み込んであるとします。このセルB17にD5のセルに入っている値を入力したいのですが、次の記述ではエラーがでました。この場合どのようにすれば良いのでしょうか。どなたかご指導いただけないでしょうか。 Range(data(row,col).value)=range("D5").value
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記を参考にしてください。A1:A10に1-10を入れて 実行し1-10の値を答えてください。 Sub test01() n = InputBox("行=") s = "A" & n MsgBox Range(s) Range(s) = "a" End Sub しかし私などはCells()を使います。 Sub test02() n = InputBox("行=") MsgBox Cells(n, "A") Cells(n, "A") = "a" End Sub 他に Sub test03() m = 1: n = 3 s = "A" & m & ":" & "C" & n Range(s) = "3" End Sub でA1:C3の全セルが3になります。 Sub test04() m = 1: n = 3 Range(Cells(m, "A"), Cells(n, "C")) = "3" End Sub としても出来ます。
その他の回答 (2)
- kakusuke
- ベストアンサー率36% (95/259)
.valueを省いてみたらどうですか?
お礼
早速のご指導ありがとうございました。 valueを省いてみたのですが、やはりエラーになりました。 何か別の要因があるのかもしれません。 また、何かお気づきの点があれば、ご指導お願いします。 ありがとうございました
- papayuka
- ベストアンサー率45% (1388/3066)
配列 data(row,col)に番地って、どんな事をしているのでしょう? 配列 data(row,col) が 「B17」 なら Range(data(row,col)).value = range("D5").value で良いと思います。 何故わざわざ二次配列にセルのアドレスを格納するのかが不明ですけど。。。 Sub test() Dim data, myRow As Long, myCol As Integer myRow = 0: myCol = 0 ReDim data(myRow, myCol) data(myRow, myCol) = Range("B17").Address Range(data(myRow, myCol)).Value = Range("D5").Value End Sub
お礼
早速のアドバイスありがとうございました。二次元配列をつかっているのは、特定の番地に特定の値を入力する必要があるために、まず番地を読み込み、row+1の値をこの番地に入れようとしたためです。初心者故にトンチンカンなことをやっているのかもしれません。 でも、このように丁寧にご指導頂き本当に感謝します。
お礼
早速、詳細なご指導をいただき感謝します。本当に参考になりました。とりいそぎお礼まで