none
VBAでExcelの名前付きセル範囲を参照したいです RRS feed

  • 質問

  • Excel上で既にセルに名前をつけた範囲があります。名前の管理ウィンドウで確認すると、範囲は「ブック」、参照範囲は「=[シート名]!$E$9:$I$9,[シート名]!$E$11:$I$11,[シート名]!$E$13:$I$13」となっています。

    この名前のついたセルの値だけ処理をしたいのですが、下記コードを実行すると

        For i = 1 To Range(cellName).Count
            MsgBox "address : " + Range(cellName).Item(i).Address
        Next i

    出力内容は以下の通りで、名前をつけていないはずの飛ばされる部分が取得され、その分範囲がぎゅっと縮まってしまいます。

    $E$9
    $F$9
    $G$9
    $H$9
    $I$9
    $E$10
    $F$10
    $G$10
    $H$10
    $I$10
    $E$11
    $F$11
    $G$11
    $H$11
    $I$11

    どうしたら名前をつけたセルのみ参照できるでしょうか?

    ちなみに利用ソフトは、Office Professional 2010です。

    2017年7月25日 7:53

回答

  • Excel 2016 の環境ですが、私もご質問のコードで同様の結果となりました。
    For Each を使ったところ正しく名前付きの範囲が取得できました。

    Dim rng As Range
    Set rng = Range(cellName)
    For Each cel In rng
        MsgBox "address : " + cel.Address
    Next
    • 編集済み kenjinoteMVP 2017年7月25日 9:11
    • 回答としてマーク TRNS-001 2017年7月27日 3:01
    2017年7月25日 8:32

すべての返信

  • Excel 2016 の環境ですが、私もご質問のコードで同様の結果となりました。
    For Each を使ったところ正しく名前付きの範囲が取得できました。

    Dim rng As Range
    Set rng = Range(cellName)
    For Each cel In rng
        MsgBox "address : " + cel.Address
    Next
    • 編集済み kenjinoteMVP 2017年7月25日 9:11
    • 回答としてマーク TRNS-001 2017年7月27日 3:01
    2017年7月25日 8:32
  • 返信が遅れすみません。回答いただいた内容で試したところ、想定していた通りの範囲が取得できました。ありがとうございました。
    2017年7月27日 3:01