Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39157 / 76738 ←次へ | 前へ→

【42700】Re:範囲指定について
回答  りん E-MAIL  - 06/9/19(火) 18:08 -

引用なし
パスワード
   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行目に使用不可と入るのを確認しました。
0 hits

【42687】範囲指定について Rilly 06/9/19(火) 13:47 発言
【42693】Re:範囲指定について パン 06/9/19(火) 15:09 発言
【42694】Re:範囲指定について りん 06/9/19(火) 15:10 回答
【42697】Re:範囲指定について Jaka 06/9/19(火) 16:55 発言
【42700】Re:範囲指定について りん 06/9/19(火) 18:08 回答
【42696】Re:範囲指定について ハナ 06/9/19(火) 16:13 質問
【42713】Re:範囲指定について yata 06/9/19(火) 22:38 発言
【42719】Re:範囲指定について ハナ 06/9/20(水) 8:17 お礼
【42702】Re:範囲指定について Kein 06/9/19(火) 19:17 回答

39157 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free