変な形式でDLされるCSVとかがあり、選択範囲に空白があれば、同じ範囲内にあるひとつ上のセルの値で埋めたい、ってことがありますよね(?)

ちょっと何言ってるか分からなくなりそうなので、つまり以下のようにしたいってことです。

コード

コピぺして実行できるはずです。

Sub BlanksValues()

Dim useRng As Range: Set useRng = Selection
Dim useRowStr As Long: useRowStr = useRng.Row
Dim useColStr As Long: useColStr = useRng.Column
Dim useRowEnd As Long: useRowEnd = useRng.Row + useRng.Rows.Count - 1 '選択範囲の最終行取得
Dim useColEnd As Long: useColEnd = useRng.Column + useRng.Columns.Count - 1 '列取得

Dim val As String: val = ""
Dim c As Long: For c = useColStr To useColEnd
    Dim r As Long: For r = useRowStr To useRowEnd

        If Cells(r, c).Value = "" Then
            Cells(r, c).Value = val
        Else
            val = Cells(r, c).Value
        End If

    Next
    val = "" '列が変わるところで初期化
Next

End Sub