こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

空白セルに●を入れたい

Excelのセル範囲(例:としてA1からC10)のセルを調べて、
空白のセルになにかの文字(例:●)を打ち込みたい場合のVBAの書き方を教えてください。

Sub セル埋め()

Dim r As Range, i As Range
Set r = Range("A1:C10") '範囲指定
If Intersect(r, Target) Is Nothing Then
For Each i In r
If i.Value = "" Then i.Value = "●"
Next i
End Sub

この書き方にこだわっているわけではないので、もっと簡単なやり方でもけっこうです。

投稿日時 - 2018-11-26 20:05:16

QNo.9561983

困ってます

質問者が選んだベストアンサー

>P列まで●が埋まらず、N列までしか埋まらないのはなぜでしょうか。
確認しました、まったく使われていない領域にはSpecialCellsの効果が無いようですね、なので基本に戻って
Sub セル埋め()
  Dim r As Range
  For Each r In Range("A1:P10")
    If r.Value = "" Then r.Value = "●"
  Next r
End Sub

投稿日時 - 2018-11-26 21:53:58

お礼

ばっちりです。
ありがとうございました。

難しく考えていたようです。

投稿日時 - 2018-11-26 22:02:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

下記のようなのもあります。
Sub test38()
Range("a1:c5").Replace what:="", replacement:="●"
End Sub
Range("a1:c5"≫の部分は適当にかえてください。
使っているのは、Rangeに対する、Replaceメソッドです。

投稿日時 - 2018-11-26 21:40:30

補足

replacementメソッド教えていただき、ありがとうございました。

投稿日時 - 2018-11-26 22:03:26

お礼

ありがとうございます。これもいいですね。

空セル(入力なし)のシートで試すと、右端列にデータがあるかないか、や
どこまでセル選択があるかないかで、●が埋まる範囲に変動が起こるようです。

投稿日時 - 2018-11-26 22:00:58

ANo.1

SpecialCells メソッドを使ってみては
但し、空白セルが無いとエラーになりますので対策が必要ですが
On Error Resume Next
Range("A1:C1").SpecialCells(xlCellTypeBlanks).Value = "●"
On Error GoTo 0

投稿日時 - 2018-11-26 21:07:07

補足

右端の列に何か値があるときとないとき(全部空セル)のときで、●が埋まる右単列に位置変動があるようです。わたしのExcelのバグかも。
ちなみにOffice2013です。

投稿日時 - 2018-11-26 21:55:34

お礼

シンプルで良いですね。

範囲を
Sub 空白埋め()

On Error Resume Next
Range("A1:P10").SpecialCells(xlCellTypeBlanks).Value = "●"
On Error GoTo 0

End Sub

としてみたのですが、P列まで●が埋まらず、
N列までしか埋まらないのはなぜでしょうか。

投稿日時 - 2018-11-26 21:31:48