VBA 結合セルを扱う(正しい方法)
こんにちは。
派犬事務員のコロ子です。
前回の記事を書いたら、MergeAreaプロパティを使えばいいんじゃない?
と教えて頂いた。
MergeAreaプロパティ、こんな便利なものがあったなんて!!!
「練習のために○○は使わないでコードを書いてみましょう」的な事をしているのではなくて、素で知らなかった。
知らないと「VBA道場で修行的なコード」「体育会系に鍛錬的なコード」になっちゃう。修行も鍛錬も好きじゃないからー!!
MergeAreaプロパティは「結合されているセル範囲のRangeオブジェクトを返す」とのことなので、例えば
Range("B6").MergeArea(1).Value
と書くとB6セルを含む結合範囲の1番目のセルの値が取得できる。
ちなみに
Range("B4:B10").MergeArea.Value
とか
Range("B4:B10").MergeArea(1).Value
と書きたくなるけど
Range("B6").MergeArea(1).Value
Rangeの中身は単独セルを書かないといけない。
では、早速MergeAreaプロパティを使って書き直そう。
Sub Test1() Dim ran As Range For Each ran In Range("D4:H17") Debug.Print "日付:" & _ Cells(2, ran.Column).MergeArea(1).Value & _ Cells(3, ran.Column).Value Debug.Print "サンプル名:" & _ Cells(ran.Row, 2).MergeArea(1).Value Debug.Print "ロット番号:" & _ Cells(ran.Row, 3).MergeArea(1).Value Debug.Print "データ:" & ran.Value Next ran End Sub
えっつ!!これだけ?超簡単じゃん!
めちゃめちゃスッキリ!