Sub prcApplyUDFToVisibleCellsAfterFilteringBlanksInDColumn()
' 変数宣言
Dim ws As Worksheet ' 処理対象のワークシート
Dim rngVisible As Range ' フィルタ後の可視範囲
Dim rngFirstVisibleCell As Range ' 可視セルの1行目
Dim lngLastRow As Long ' データの最終行
' 処理対象のワークシートを設定
Set ws = ThisWorkbook.Sheets("Sheet1")
' データの最終行を取得
lngLastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
' 既存のフィルタをクリア
If ws.AutoFilterMode Then ws.AutoFilterMode = False
' D列が空白の条件でオートフィルタを適用
ws.Range("A1:D" & lngLastRow).AutoFilter Field:=4, Criteria1:="="
' H列の可視セルを取得
On Error Resume Next ' エラーを無視(フィルタ後に可視セルがない場合を考慮)
Set rngVisible = ws.Columns("H:H").SpecialCells(xlCellTypeVisible)
On Error GoTo 0 ' エラー無視を解除
' 可視範囲が存在しない場合、処理を中止
If rngVisible Is Nothing Then
MsgBox "可視セルが存在しません。", vbExclamation
Exit Sub
End If
' H列の可視セル1行目に数式を設定
Set rngFirstVisibleCell = rngVisible.Cells(1, 1)
rngFirstVisibleCell.Formula = "=fncBlnTest()"
' 数式を可視セルの最終行までコピー
rngFirstVisibleCell.AutoFill Destination:=rngVisible, Type:=xlFillDefault
End Sub
コメント