こんにちは、Ryoです。
基準とするセルの左側や右側の値を取得したい場合に便利なのがPreviousプロパティとNextプロパティで、これらを活用することで基準セルに対し左右それぞれのセル値を取得できます。今回はこの内容とOffsetプロパティを利用したサンプルについても書いていこうと思います。
1.サンプル概要
サンプルとして準備した以下の表から「セルB6」を基準として、左側の値と右側の値をそれぞれ取得しメッセージボックスで表示します。
メッセージボックスには基準としている「セルB6の値」、左側の日付データ「2月5日」、右側の数量データ「500」をそれぞれ取得して表示しています。
日付データに関しては普通に取得すると20**/**/**の西暦表示となるのでコード内でFormat関数を利用して表示形式を合わせています。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() With Range("B6") .Select MsgBox "セルB6の値: " & ActiveCell.Value _ & vbCrLf & "セルB6左側: " & Format(.Previous.Value, "m月d日") _ & vbCrLf & "セルB6右側: " & .Next.Value End With '基準位置としてセルB6を選択し、その左側のセルと右側のセルの値を '取得してメッセージボックスに表示 'セルの左側を取得する操作(Shift+TABキーを押す操作に相当) ' =Previousプロパティ 'セルの右側を取得する操作(TABキーを押す操作に相当) ' =Nextプロパティ End Sub
このように指定したセルの左側のセル値を取得するにはPreviousプロパティ、指定したセルの右側のセル値を取得するにはNextプロパティを使用します。
構文:オブジェクト.Previous
構文:オブジェクト.Next
Shift+TABキー操作(左に移動)に相当するのがPreviousプロパティ、TABキー(右に移動)に相当するのがNextプロパティになります。
Range(”B6″)に対しそれぞれ指定することで左右の値を取得していますが、日付けデータの部分はワークシート表示と異なってしまうのでFormat関数で同形式に指定しています。
Format(.Previous.Value, “m月d日”)
このFormat関数を利用しているのはメッセージボックス上での表示を合わせる目的なので、特に指定しなくても問題ないものです。
◆参考:Offsetプロパティの利用
Previousプロパティ/Nextプロパティ部分をOffsetプロパティに置換しても同様の結果になりますのでご参考までに。
Offsetプロパティであれば隣接していないセル値も取得できるので、用途によって使い分けていくと良いと思います。
Sub Sample2() 'Offsetプロパティでの例 With Range("B6") .Select MsgBox "セルB6の値: " & ActiveCell.Value _ & vbCrLf & "セルB6左側: " & Format(.Offset(0, -1), "m月d日") _ & vbCrLf & "セルB6右側: " & .Offset(0, 1).Value End With 'Offsetプロパティで指定する0は省略可なので 'Offset(,-1)やOffset(,1)でも可能 End Sub
3.まとめ
セル値の取得はVBAを扱って処理する上で多々発生するものなので、その値を取得する手段を知っておくと何かと助かる局面が多いと思います。
今回扱ったPreviousプロパティは左、Nextプロパティは右と覚えておけば処理する中で活用する場面もあるかと思いますので、その際はご検討くださいませ。
以上、隣接するセルの取得と参照を行う方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo