この記事では、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マクロで空白行の位置を上から取得・探す(最初の空白・列・行)する方法について解説しました。
マクロをマスターしてさらに快適な生活を送っていきましょう!!