「active cellの下に行を追加する vba」
という検索キーワードに気づきました。
いくつかの書き方がありそうですが、
RangeオブジェクトのEntireRowプロパティと、
RangeオブジェクトのOffsetプロパティを組み合わせるのが、
ひとつの方法です。
アクティブセルの上に行を挿入するサンプルマクロ
「active cellの下に行を追加する vba」ということですけれど、下への行挿入よりも簡単な、アクティブセルの上に行を挿入するプロシージャから、確認しましょう。
ActiveCell.EntireRow.Insert
End Sub
ActiveCellプロパティで取得したRangeオブジェクトのEntireRowプロパティで、アクティブセルの存在する行全体を表すRangeオブジェクトを取得できます。
ActiveCell.EntireRow.Insert
「ActiveCell.EntireRow」で取得した、アクティブセルの存在している行全体を表すRangeオブジェクトのInsertメソッドを実行すると、アクティブセルの上に行が挿入されます。
ActiveCell.EntireRow.Insert
アクティブセルの下に行を挿入するサンプルマクロ
アクティブセルの下に行挿入をする場合は、以下のようなプロシージャです。ActiveCell.Offset(1, 0).EntireRow.Insert
End Sub
先ほどのプロシージャとの違いは、ActiveCellプロパティの直後に「.Offset(1, 0)」というRange.Offsetプロパティを使った、Rangeオブジェクトを取得する式が存在するところです。
ActiveCellプロパティで取得したRangeオブジェクトのOffsetプロパティの、第1引数に「1」第2引数に「0」を指定することで、アクティブセルの1つ下のセルを表すRangeオブジェクトが取得できます。
ActiveCell.Offset(1, 0) .EntireRow.Insert
「ActiveCell.Offset(1, 0)」で取得したアクティブセルの1つ下のセルを表すRangeオブジェクトの、EntireRowプロパティでアクティブセルの1つ下の行全体を表すRangeオブジェクトが取得できます。
ActiveCell.Offset(1, 0).EntireRow.Insert
「ActiveCell.Offset(1, 0).EntireRow」で取得したアクティブセルの1つ下の行全体を表すRangeオブジェクトの、Insertメソッドで結果的にアクティブセルの下に行が挿入されます。
ActiveCell.Offset(1, 0) .EntireRow.Insert
最終更新日時:2018-11-13 05:38
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » EntireRow・Offsetでアクティブセルの上や下に行を挿入する