VBA – 行や列全体を選択する(操作する)
In this Article
このチュートリアルでは、VBAで行または列全体を選択し、操作する方法を紹介します。
まず、行と列全体を選択する方法を説明し、次に行と列を操作する方法を説明します。
行または列全体の選択
単一の行を選択する
Rowsオブジェクトを使うと、次のように行全体を選択することができます。
Rows(5).Select
また、RangeオブジェクトやCellsオブジェクトと一緒にEntireRowを使うこともできます。
Range("B5").EntireRow.Select
または
Cells(5,1).EntireRow.Select
また、Range オブジェクトを使用して、特定の行を参照することもできます。
Range("5:5").Select
単一の列を選択する
Rowsオブジェクトの代わりに、Columnsオブジェクトを使って、列を選択することができます。ここでは、列番号3を選択します。
Columns(3).Select
文字 “C “を引用符で囲んで指定することもできます。
Columns("C").Select
EntireRowの代わりに、EntireColumnと Range オブジェクトやCellsオブジェクトを使って、列全体を選択することもできます。
Range("C5").EntireColumn.Select
または
Cells(5,3).EntireColumn.Select
Range オブジェクトを使用して、特定の列を参照することもできます。
Range("B:B").Select
複数の行や列を選択する
複数の行や列を選択することも、EntireRowやEntireColumnを使用して全く同じようにできます。
Range("B5:D10").EntireRow.Select
または
Range("B5:D10").EntireColumn.Select
ただし、RowsオブジェクトやColumnオブジェクトを使う場合は、行番号や列文字を引用符で囲んで入力する必要があります。
Rows("1:3").Select
または
Columns("B:C").Select
ActiveCellの行または列を選択する
ActiveCellのRowまたはColumnを選択するには、以下のコードのいずれかを使用します。
ActiveCell.EntireRow.Select
または
ActiveCell.EntireColumn.Select
他のワークシートの行と列を選択する
他のワークシートの行や列を選択するには、まずワークシートを選択する必要があります。
Sheets("Sheet2").Select
Rows(3).Select
他のワークブックの行や列を選択する場合も同様です。
Workbooks("Book6.xlsm").Activate
Sheets("Sheet2").Select
Rows(3).Select
注意:目的のワークブックをActivateする必要があります。Sheetsオブジェクトとは異なり、Workbooksオブジェクトには Selectメソッドがありません。
行と列を選択する必要はあるのか?
実は、行や列を選択する必要は、ほとんどありません。行や列を操作するために、メソッドやプロパティを直接行や列に適用することができるからです。次のセクションでは、適用可能なメソッドとプロパティを説明します。 行や列を参照するには、上記のどの方法でもかまいません。
行と列のメソッドとプロパティ
行全体または列全体を削除する
行や列を削除するには、Deleteメソッドを使用します。
Rows("1:4").Delete
または
Columns("A:D").Delete
行または列を挿入する
行や列を挿入するには、Insertメソッドを使用します。
Rows("1:4").Insert
または
Columns("A:D").Insert
行や列の全体をコピーして貼り付ける
既存の行や列への貼り付け
行や列を丸ごとコピーして貼り付ける場合、既存の行や列の上に貼り付けるのか、それとも新しい行や列を挿入してデータを貼り付けるのかを決める必要があります。 この例では、既存の行または列の上にコピー&ペーストします。
Range("1:1").Copy Range("5:5")
または
Range("C:C").Copy Range("E:E")
挿入と貼り付け
次の例は、新しく挿入された行または列に貼り付けます。 この例では、1行目をコピーして5行目に挿入し、既存の行を下にずらします。
Range("1:1").Copy
Range("5:5").Insert
これは、C 列をコピーして E 列に挿入し、既存の列を右に移動させます。
Range("C:C").Copy
Range("E:E").Insert
行と列を非表示にする/非常時を解除する
行や列を非表示にするには、その非表示プロパティをTrue に設定します。行や列の非常時を解除するには、False を使用します。
'行を非表示にする
Rows("2:3").EntireRow.Hidden = True
'行の非表示を解除する
Rows("2:3").EntireRow.Hidden = False
または
'列を非表示にする
Columns("B:C").EntireColumn.Hidden = True
'列の非表示を解除する
Columns("B:C").EntireColumn.Hidden = False
行と列をグループ化する/グループ化を解除する
行や列をグループ化したい場合は、次のようなコードを使います。
'行をグループ化
Rows("3:5").Group
'列をグループ化
Columns("C:D").Group
グループ化を解除するには、次のコードを使用します。
'行のグループ化を解除
Rows("3:5").Ungroup
'列のグループ化を解除
Columns("C:D").Ungroup
これで「グループ化」されたアウトラインレベルがすべて展開されます。
ActiveSheet.Outline.ShowLevels RowLevels:=8, ColumnLevels:=8
で、これはすべてのアウトラインレベルを折りたたみます。
ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
行の高さや列の幅を設定する
列の幅を設定するには、次のコードを使用します。
Columns("A:E").ColumnWidth = 30
行の高さを設定するには、次のコードを使用します。
Rows("1:1").RowHeight = 30
行の高さ/列の幅を自動調整する
列の幅を自動調整するには、次のようにします。
Columns("A:B").Autofit
行の高さを自動調整するのも同様です。
Rows("1:2").Autofit
他のワークシートやワークブックの行と列
他のワークシートの行と列を操作するには、Sheetsオブジェクトを定義する必要があります。
Sheets("Sheet2").Rows(3).Insert
同様に、他のワークブックの行と列を操作するには、Workbookオブジェクトも定義する必要があります。
Workbooks("book1.xlsm").Sheets("Sheet2").Rows(3).Insert
アクティブな行と列を取得する
アクティブな行や列を取得するには、ActiveCellオブジェクトのRow プロパティと Columnプロパティを使用します。
MsgBox ActiveCell.Row
または
MsgBox ActiveCell.Column
これは、Rangeオブジェクトでも使えます。
MsgBox Range("B3").Column