• ベストアンサー

Range("****")の****部分を変数にできますか?

エクセルでVBAを勉強中の初心者です。 今、配列data(row,col)に番地B17が読み込んであるとします。このセルB17にD5のセルに入っている値を入力したいのですが、次の記述ではエラーがでました。この場合どのようにすれば良いのでしょうか。どなたかご指導いただけないでしょうか。 Range(data(row,col).value)=range("D5").value

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

下記を参考にしてください。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 としても出来ます。

tomosato
質問者

お礼

早速、詳細なご指導をいただき感謝します。本当に参考になりました。とりいそぎお礼まで

その他の回答 (2)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.3

.valueを省いてみたらどうですか?

tomosato
質問者

お礼

早速のご指導ありがとうございました。 valueを省いてみたのですが、やはりエラーになりました。 何か別の要因があるのかもしれません。 また、何かお気づきの点があれば、ご指導お願いします。 ありがとうございました

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

配列 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

tomosato
質問者

お礼

早速のアドバイスありがとうございました。二次元配列をつかっているのは、特定の番地に特定の値を入力する必要があるために、まず番地を読み込み、row+1の値をこの番地に入れようとしたためです。初心者故にトンチンカンなことをやっているのかもしれません。 でも、このように丁寧にご指導頂き本当に感謝します。

関連するQ&A