[[20150315173802]] 『記入されたセル名を抽出するには』(ゆり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『記入されたセル名を抽出するには』(ゆり)

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

すみません、説明が漏れました。
シート名が「2」なのです…。
(ゆり) 2015/03/15(日) 18:37

 そうでしたか。
 では
 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


よくある間違いで半角の2と全角の2で違うということはないですよね

(デイト) 2015/03/15(日) 19:20


アプリケーション定義またはオブジェクト定義のエラーということは、コードはあっているけど、それが適用できないということでしょうか?

例えば、セルが結合されているとか。コードではなく、セルやシートを見直してみてはいかがでしょうか?
(スズメ) 2015/03/15(日) 22:46


あと、ゆりさんはSetを使わずにWs3、Ws1を使っておられますが、使う時はSetを使わないといけないのではないでしょうか?もし、使わないのであれば、Ws1はWorksheets("1")、Ws3はWorksheets("3")と書き換えてみてはどうでしょうか?
(スズメ) 2015/03/15(日) 23:05

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.