[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『記入されたセル名を抽出するには』(ゆり)
1シート目に「=2シート目!AF15」という数式が入っている表があります。
(AF15は文字列です)
今回、「=2シート目!AF15」と入ったエクセルと「=2シート目!AF16」が入った
エクセルとを作りたいのですが、開始セルのAF15が各月によって変動するため、
3シート目に開始セルとなるセル名(今回でいえば「AF15」)を書くように
したのですが、VBAでこのAF15を引っ張ってくる方法が分かりません。
Dim Bu As String Bu = Ws3.Range("D4").Value ←「AF15」が入ったセル Ws1.Range("B3") = Worksheet2.Range(Bu)
上記マクロではインデックス値が不正ということでエラーとなります。
何かいい手は無いでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
問題なのは Worksheet2 の方ではないですか? 2シート目は Worksheets(2) にしてどうでしょうか。 (Mook) 2015/03/15(日) 17:45
Ws1.Range("B3") = Worksheets("2").Range(Bu) (ゆり) 2015/03/15(日) 18:13
いや、なんで "2" にするのでしょうか。 シート名が「2」 という名前なのですか? シートはインデックス(左からの順番)の数値か、名前の文字列で指定します。
2 と "2" は別のものになります。 10シートあって一番右のものが「100」という名前のシートであれば、これを指定するのは WorkSheets("100") '// 名前で指定 か WorkSheets(10) '// 位置で指定 になります。
Sub Sample() Dim Ws1 As Workheet Set Ws1 = Worksheets(1) '// 左から1番目のシート
Dim Ws2 As Workheet Set Ws2 = Worksheets(2) '// 左から2番目のシート
Dim Ws3 As Worksheet Set Ws3 = Worksheets(3) '// 左から3番目のシート
Dim Bu As String Bu = Ws3.Range("D4").Value '// ←WS3 の D4 の中身 // 「AF15」が入っている? Ws1.Range("B3").Value = Ws2.Range(Bu).Value End Sub
Sub Sample2() Dim Ws1 As Workheet Set Ws1 = Worksheets("Sheet1") '// 「Sheet1」という名前のシート
Dim Ws2 As Workheet Set Ws2 = Worksheets("Sheet2") '// 「Sheet2」という名前のシート
Dim Ws3 As Worksheet Set Ws3 = Worksheets("Sheet3") '// 「Sheet3」という名前のシート
Dim Bu As String Bu = Ws3.Range("D4").Value '// ←WS3 の D4 の中身 // 「AF15」が入っている? Ws1.Range("B3").Value = Ws2.Range(Bu).Value End Sub (Mook) 2015/03/15(日) 18:24
そうでしたか。 では Sub Sample() Set Ws2 = Worksheets("2") Set Ws3 = Worksheets("3") MsgBox Ws2.Range("D4").Value ' Ws2 の D4 中身は「AF15」 MsgBox Ws3.Range(Ws2.Range("D4").Value).Value ' Ws3 の AF15 End Sub
は期待した値が表示されませんか?
(Mook) 2015/03/15(日) 18:45
(デイト) 2015/03/15(日) 19:20
例えば、セルが結合されているとか。コードではなく、セルやシートを見直してみてはいかがでしょうか?
(スズメ) 2015/03/15(日) 22:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.