VBAで "$ B $ 4:$ B $ 11"のような範囲アドレスを持つExcelの結合セルの値を取得する方法
Excelでマージセルを使用することが本当に推奨されていない場合(必要に応じて _Center Across Selection
_ を使用します)、値を「含む」セルは左上(少なくとも、それを表現する方法です)。
したがって、範囲_B4:B11
_の結合セルの値を取得するには、いくつかの方法があります。
Range("B4").Value
Range("B4:B11").Cells(1).Value
Range("B4:B11").Cells(1,1).Value
また、他のすべてのセルには値がありません。デバッグ中に、値がempty
であることがわかります。
また、Range("B4:B11").Value
は機能しないことに注意してください(_Debug.Print
_ itを実行しようとすると実行エラー番号13になります)。
ジョシュ・ブラウンは(コメントで)私が最高の答えだと思うものを与えました:
マージされた領域の境界がわからないときは、次の値を取得します
Range("B6").MergeArea.Cells(1,1).Value
これは、たとえば、不明な範囲のセルを結合した可能性のあるファイルをループ処理している場合にVBAで役立ちます。したがって、この方法でより一般的になります。ジョシュありがとう!
これは2つの手順で実行できます。
最初に、結合されたセルの範囲に名前を付けます。結合されたセルを強調表示してから、リボンバーに移動します。Formulas Tab --> Define Name;
名前にスペースが含まれていないことを確認してください。例:defined_Name
。出力/結果を表示する目的のセルに移動します。そのセルに次のように入力します:=defined_Name
。
完了したらEnterを押します。