セル範囲の先頭のセルを取得する方法を解説します。
たとえばRange("B2:D10")からB2を取得するには、
以下のコードを実行します。
Dim セル範囲 As Range Set セル範囲 = Range("B2:D10") Dim 先頭セル As Range Set 先頭セル = セル範囲.Cells(1)
セル範囲の先頭(左上)のセルを取得するには、
セル範囲.Cells(1)というコードを用います。
第1セルというそのままの記述で取得できるので、
とても分かりやすいコードですね。
セル範囲であればどんなコードにも使用できるため、
以下のように使用することもできます。
' 使用している範囲の第1セルを調べる Set シート先頭セル = Worksheets("○○").UsedRange.Cells(1) ' C列で数式が入力された最初のセルを調べる Set 数式先頭セル = Columns(3).SpecialCells(xlCellTypeFormulas).Cells(1)
簡単で便利なコードですので覚えておきましょう。
その他の記述と注意点
先頭のセルを取得するコードには以下のコードも使用できます。
Dim セル範囲 As Range Set セル範囲 = Range("B2:D10") ' 以下のいずれのコードでもB2セルを取得できます。 Dim 先頭セル As Range Set 先頭セル = セル範囲.Cells(1) Set 先頭セル = セル範囲.Cells(1, 1) Set 先頭セル = セル範囲.Item(1) Set 先頭セル = セル範囲.Item(1, 1) Set 先頭セル = セル範囲(1) Set 先頭セル = セル範囲(1, 1)
どれも内部ではほとんど同じ動きになっています。
ただし、元のセル範囲がRows/Columnsで取得されていると、
上記のうち後者4つが意図した動きになりません。
Dim セル範囲 As Range Set セル範囲 = Rows(3) ' 3行目全体 ' 3行目の第1セルであるA3を取得したいが。。。 Dim 先頭セル As Range Set 先頭セル = セル範囲.Cells(1) ' A3 Set 先頭セル = セル範囲.Cells(1, 1) ' A3 Set 先頭セル = セル範囲.Item(1) ' 3:3 × Set 先頭セル = セル範囲.Item(1, 1) ' アプリケーションエラー × Set 先頭セル = セル範囲(1) ' 3:3 × Set 先頭セル = セル範囲(1, 1) ' アプリケーションエラー ×
分かりやすさでも安定度でもCells(1)が一番いいと思いますが、
その他の記述も人のコードを読むとき用に覚えておきましょう。
これらの詳しい仕様と解説はこちらをどうぞ
準備中