|
Jaka さん、おひさしゅう(笑)
>私も最近気づいたんですが、
>SpecialCellsって、UsedRange内でしか認識できないみたいなんですよね。
>(5行目が使った形跡がないと範囲から外れる)
>もう少し細かく言うと、A1からUsedRange最後のセルみたいな...。
確かに列方向はUsedRangeから外れているとダメでした。
でも、行方向は問題ないみたいです。
※列方向に広がるとファイルがでかくなるのと何か関係ありそうな。
まあ、具体的に言うとC列に何も入ったことがないとうまく動作しないようです。
なので改良。
Sub test()
Dim r1 As Range, r2 As Range
'A列でチェックした範囲の2つ右がC列
With Application.ActiveSheet
Set r1 = .Range(.Range("A1"), .Range("A65536").End(xlUp).Offset(1, 0)).Offset(0, 2)
End With
'C列の範囲が全部空白かどうかの判定
If Application.WorksheetFunction.CountA(r1) = 0 Then
Set r2 = r1
Else
'使ってるセルがある場合
'その中の空白セルを抽出(編集→ジャンプ→セル選択→空白と同じ処理)
'空白が無いとエラーになるのでスキップ
On Error Resume Next
Set r2 = r1.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
End If
'空白セルがあれば値を入れる
If Not r2 Is Nothing Then r2.Value = "使用不可"
'終わり
Set r1 = Nothing: Set r2 = Nothing
End Sub
新しいシートのA1セルに何か入れて実行すると、C列の1〜2行目に使用不可と入るのを確認しました。
|
|