VBA の列を数える

Iqra Hasnain 2023年1月30日
  1. VBA の列を数える
  2. VBA の範囲内の列をカウント
  3. VBA で Range().End メソッドを使用する
  4. VBA で Cells.Find() メソッドを使用する
VBA の列を数える

この記事では、Excel で VBA を使用してデータを含む列を簡単にカウントする 2つの方法について説明します。

VBA の列を数える

数列の小さなデータテーブルがある場合、それらを簡単に数えることができますが、大きなデータテーブルがエラーなしですべての列を数えるのは非常に困難です。また、一部の列にはデータが含まれている場合がありますが、一部の列は完全に空白になっている場合があります。

したがって、大きなデータテーブルの場合、データを含むすべての列をカウントすることは非常に困難です。それでは、使用するサンプルデータを含むシートを作成しましょう。

VBA の列をカウントするシートを作成する

次のデータテーブルに 3つの列が表示されます。1つの Excel ワークシートで使用される列の数を制御するために、VBA コードを使用します。

まず、ALT + F11キーを押して VBA エディターを開きます。その後、挿入>モジュールから新しいモジュールを作成します。

VBA の列をカウントするための新しいマクロを作成する

次に、新しいサブ usedColumns() を作成します。新しいサブ内では、with ループを使用して、メソッド UsedRange を使用して使用範囲を取得します。

その後、columns の count メソッドを使用して、使用された列の数を出力します。

サンプルコード:

# VBA
Sub usedColumns()
With Sheet1.UsedRange
MsgBox "The Used Columns are: "& .Columns.Count
End With
End Sub

マクロを保存し、F5を押すか、実行をクリックして実行します。マクロダイアログボックスが次のように表示されます。

出力:

With ループを使用して VBA の列をカウントする

VBA の範囲内の列をカウント

次の VBA コードは、指定された範囲のデータを持つすべての列をカウントします。

新しいサブ ColumnsInRange() を作成しましょう。このサブ内では、範囲関数を使用して、その範囲内の列の数を選択してカウントします。

サンプルコード:

# VBA
Sub ColumnsInRange()
Dim newRange As Worksheet
Set newRange = Worksheets("Sheet1")
MsgBox "The Used Columns are: " & newRange.Range("A15:D15").Columns.Count
End Sub

出力:

指定された範囲のデータを持つすべての列をカウントします

VBA で Range().End メソッドを使用する

Range().End メソッドを使用して、その範囲で使用される最後の列を取得できます。

新しいサブ findLastColumn() を作成し、そのサブ内で、範囲の End メソッドを使用して、シートの右側に向かって使用される最後の列を検索します。

# VBA

Sub findLastColumn()
Dim newRange As Integer
newRange = Range("A2").End(xlToRight).Column
MsgBox newRange
End Sub

出力:

End メソッドを使用してシートの右側に使用されている VBA の最後の列の列をカウントします

上の図のように、ポップアップダイアログボックスに最後の列番号が表示されます。

VBA で Cells.Find() メソッドを使用する

Range.Find メソッドを使用して、VBA コードを使用してシートから最後に使用された列を取得することもできます。

次のコードを確認してください。LastColumnByFind() サブでは、Cells.Find() メソッドを使用して、最後に使用された列を検索します。

サンプルコード:

# VBA
Sub LastColumnByFind()
Dim newRange As Long
    newRange = Cells.Find(What:="*", _
                    After:=Range("A1"), _
                    LookAt:=xlPart, _
                    LookIn:=xlFormulas, _
                    SearchOrder:=xlByColumns, _
                    SearchDirection:=xlPrevious, _
                    MatchCase:=False).Column
    MsgBox "Last Used Column Number by Find Method: " & newRange
End Sub

出力:

Find メソッドを使用して VBA の列をカウントします

関連記事 - VBA Column