Excel

【Excel】VBAマクロで空白セルの位置を取得(最初の空白行を探す・列・上から探す)する方法

当サイトでは記事内に広告を含みます

この記事では、VBAマクロで空白セルの位置を取得(最初の空白行を探す・列・上から探す)する方法について解説します。

ポイントとしては`Find空白セル`関数と`WriteRange`関数、さらには`CloseWorkbook`関数を使用することです。

変数名はわかりやすい日本語ローマ字表記を使用しており、読者が自分で使う際には、より一般的な英語表記の変数名に変更することを推奨します。

それでは、具体的な手順を見ていきましょう。

 

VBAマクロで空白セルの位置を取得する方法【列:上から空白行を探す】

それではまず、C列に着目し上から空白セルの位置を2行目から最終行まで順に取得する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

Sub Find空白セル()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Dim betsusheet As Worksheet
    Set betsusheet = ThisWorkbook.Sheets("betsusheet")
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row

    For i = 2 To lastRow
        If IsEmpty(ws.Cells(i, 3)) Then
            betsusheet.Cells(i, 1).Value = "C" & i
        End If
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面で`Find空白セル`関数を実行します。

このコードでは、まず指定されたシート内のC列を上から順番にチェックし、空白セルが見つかった場合にその位置情報を別のシートに記録しています。

 

VBAマクロで全シートの空白セルの位置を取得

続いては、シートすべてに着目し空白セルの位置をすべて取得する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub Find全シート空白セル()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        Dim lastRow As Long, lastCol As Long, r As Long, c As Long
        lastRow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        lastCol = ws.Cells.Find("*", SearchOrder:=xlByColumns,

 SearchDirection:=xlPrevious).Column

        For r = 1 To lastRow
            For c = 1 To lastCol
                If IsEmpty(ws.Cells(r, c)) Then
                    betsusheet.Cells(r, c).Value = ws.Name & "!" & Cells(r, c).Address
                End If
            Next c
        Next r
    Next ws
End Sub

コードのAlt+F8を押し、マクロ選択画面で`Find全シート空白セル`関数を実行します。

このコードでは、ワークブック内の全シートをループし、各シートの最終行と最終列を検出しすべての空白セルをチェック後、空白セルの位置を別シートに記録します。

 

まとめ VBAマクロで空白行の位置を上から取得・探す(最初の空白・列・行)する方法

この記事では、VBAマクロで空白行の位置を上から取得・探す(最初の空白・列・行)する方法について解説しました。

マクロをマスターしてさらに快適な生活を送っていきましょう!!