VBA – 行や列を選択する – Automate ExcelAutomate Excel
このチュートリアルでは、VBAで行や列全体を選択して操作する方法を説明します。
まず、行や列全体を選択する方法を説明し、次に行や列を操作する方法を説明します。
行または列全体の選択
単一の行の選択
次のようにRowsオブジェクトを使って行全体を選択することができます:
Rows(5).Select
またはRangeオブジェクトやCellsオブジェクトと一緒にEntireRowを使用することもできます。
Range("B5").EntireRow.Select
または
Cells(5,1).EntireRow.Select
また、Rangeオブジェクトを使用して、特に行を参照することもできます。
Range("5:5").Select
単一カラムの選択
Rowsオブジェクトの代わりにColumnsオブジェクトを使用してカラムを選択します。
Columns(3).Select
または、引用符で囲まれた文字「C」
Columns("C").Select
EntireRowの代わりに、RangeオブジェクトまたはCellsオブジェクトと共にEntireColumnを使用して、列全体を選択します。
Range("C5").EntireColumn.Select
または
Cells(5,3).EntireColumn.Select
また、Rangeオブジェクトを使って列を特定して参照することもできます。
Range("B:B").Select
複数の行や列を選択する
複数の行や列を選択する方法は、EntireRowやEntireColumnを使用する場合と全く同じです。
Range("B5:D10").EntireRow.Select
or
Range("B5:B10").EntireColumn.Select
ただし、RowsまたはColumnsオブジェクトを使用する場合は、行番号または列文字を引用符で入力する必要があります。
Rows("1:3").Select
or
Columns("B:C").Select
ActiveCellの行または列の選択
ActiveCellの行または列を選択するには、以下のコードのいずれかを使用します。
ActiveCell.EntireRow.Select
or
ActiveCell.EntireColumn.Select
他のワークシートの行や列を選択する
他のワークシートの行や列を選択するためには、まずワークシートを選択する必要があります。
Sheets("Sheet2").SelectRows(3).Select
他のワークブックで行や列を選択する場合も同様です。
Workbooks("Book6.xlsm").ActivateSheets("Sheet2").SelectRows(3).Select
注意: 目的のワークブックをアクティブにする必要があります。 Sheets オブジェクトとは異なり、ワークブック オブジェクトには Select メソッドがありません。
行や列の選択は必要か
しかし、実際に行や列を選択する必要は (ほとんど?) ありません。 行や列を操作するために、それらを選択する必要はありません。 その代わり、メソッドやプロパティを行や列に直接適用することができます。 次のいくつかのセクションでは、適用できるさまざまなメソッドやプロパティを紹介します。
上記のどのメソッドを使っても、行や列を参照することができます。
行のメソッドとプロパティ & 列
行または列全体の削除
行または列を削除するには、Deleteメソッドを使用します。
Rows("1:4").Delete
または:
Columns("A:D").Delete
行または列の挿入
行または列を挿入するには、Insertメソッドを使用します:
Rows("1:4").Insert
または:
Rows("1:4").Insert
。
Columns("A:D").Insert
コピー & 行または列全体を貼り付ける
既存の行または列に貼り付ける
。
行や列全体をコピーして貼り付ける場合、既存の行や列の上に貼り付けるのか、それとも新しい行や列を挿入してデータを貼り付けるのかを決める必要があります。
以下の最初の例では、既存の行や列の上にコピーして貼り付けます:
Range("1:1").Copy Range("5:5")
or
Range("C:C").Copy Range("E:E")
Insert & Paste
以下の例では、新しく挿入された行や列に貼り付けます。
これは、1行目をコピーして5行目に挿入し、既存の行を下にずらします:
Range("1:1").CopyRange("5:5").Insert
これは、C列をコピーしてE列に挿入し、既存の列を右にずらします。
Range("C:C").CopyRange("E:E").Insert
行と列の表示/非表示
行や列を非表示にするには、その非表示プロパティを True に設定します。
'Hide RowsRows("2:3").EntireRow.Hidden = True'Unhide RowsRows("2:3").EntireRow.Hidden = False
または
'Hide ColumnsColumns("B:C").EntireColumn.Hidden = True'Unhide ColumnsColumns("B:C").EntireColumn.Hidden = False
行と列のグループ化/グループ化解除
行(または列)をグループ化したい場合は、以下のようなコードを使用してください。
'Group RowsRows("3:5").Group'Group ColumnsColumns("C:D").Group
グループ化を解除するには、以下のコードを使用します。
'Ungroup RowsRows("3:5").Ungroup'Ungroup ColumnsColumns("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
同様に、他のワークブックの行や列を操作するには、ワークブックオブジェクトも定義する必要があります:
Workbooks("book1.xlsm").Sheets("Sheet2").Rows(3).Insert
アクティブな行や列の取得
アクティブな行や列を取得するには、ActiveCellオブジェクトの行と列のプロパティを使用します。
MsgBox ActiveCell.Row
または
MsgBox ActiveCell.Column
これはRangeオブジェクトでも動作します:
MsgBox Range("B3").Column
。