VBAでシートの行の選択、取得、追加、削除について、ご説明します。
行の操作には「Rows」プロパティ、もしくは「Range」プロパティを使用します。
それぞれの操作にいくつか方法がありますので、一つ一つご説明します。
また、複数行の挿入やループや分岐と合わせて使用するサンプルも、併せてご説明します。
列の操作は「Excel VBA 列の選択、取得、追加(挿入)、削除」をご覧ください。
1.行の選択、取得、追加(挿入)、削除
行の操作は「Rows」プロパティか、「Range」プロパティです。
行の選択
行を選択するにはRows(行番号)で選択するか、Rangeを使用する場合は「Range.EntireRow」で指定します。
また、SelectとActivateどちらでも同じ動作となります。
Activate
Sub Sample1()
Rows(2).Activate
End SubSub Sample2()
Range("A4").EntireRow.Activate
End SubSelect
Sub Sample3()
Rows(1).Select
End SubSub Sample4()
Range("A3").EntireRow.Select
End Sub行の取得
行の取得も同様に、Rows(行番号)、Range.EntireRowで指定します。
Rows
Sub Sample5()
Dim myRow As Range
Set myRow = Rows(1)
myRow.Select
End SubRange.EntireRow
Sub Sample6()
Dim myRow As Range
Set myRow = Range("A3").EntireRow
myRow.Select
End Subまた、アクティブなセルと選択されているセルを取得する場合は次のコードになります。
ActiveCell
Sub Sample7()
Dim myRow As Range
Set myRow = ActiveCell.EntireRow
myRow.Select
End SubSelection
Sub Sample8()
Dim myRow As Range
Set myRow = Selection.EntireRow
myRow.Select
End Sub行の追加(挿入)
行の追加は「Insert」メソッドを使用します。
Rows、Range.EntireRowどちらでも追加個所を指定できます。
Rows
Sub Sample9()
Rows(5).Insert
End SubRange.EntireRow
Sub Sample10()
Range("A3").EntireRow.Insert
End Sub行の削除
行を削除する場合は「Delete」メソッドを使用します。
Rows、Range.EntireRowどちらでも削除個所を指定できます。
追加と違い、注意点としてループで複数回削除するような場合には、ループは必ず後ろから前へStep-1で削除します。
前から順に削除するとエラーとなります。
Rows
Sub Sample11()
Rows(5).Delete
End SubRange.EntireRow
Sub Sample12()
Range("A3").EntireRow.Delete
End Sub2.複数行の追加(挿入)/削除
複数行の場合、Rows(“1:5”)の様に指定します。
単一行の場合「””」で囲いませんが、複数行の場合は囲います。
Rangeの場合はRange(“A1:A5”).EntireRowの様に指定します。
Rows
Sub Sample13()
Rows("5:10").Insert
End SubSub Sample14()
Rows("5:10").Delete
End Sub
Range.EntireRow
Sub Sample15()
Range("A3:A10").EntireRow.Insert
End SubSub Sample16()
Range("A3:A10").EntireRow.Delete
End Sub3.ループと分岐で取得
A列に10個の商品名のデータがあります。
条件に指定した行を取得して、メッセージに表示します。
ここでは別の変数を用意していますが、変数「i」をそのまま使用してもかまいません。

Sub Sample17()
Dim i       As Long
Dim GetRow  As Long
For i = 2 To 11
    If Cells(i, 1) = "商品100005" Then
        GetRow = i
        Exit For
    End If
Next i
MsgBox "指定された行は" & GetRow & "です。"
End SubMsgBoxではなく、削除する場合は次のコードになります。
削除する場合は、後ろからStep-1で前に向かってループさせます。
今回は1回の処理でループを抜けているので、ループ順はどちらでも良いのですが、複数回削除を繰り返す場合は、後ろからループしないとエラーになります。
Sub Sample18()
Dim i       As Long
For i = 11 To 2 Step -1
    If Cells(i, 1) = "商品100005" Then
        Rows(i).Delete
        Exit For
    End If
Next i
End Sub
 
  
  
  
  
