Excel VBA質問箱 IV

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

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


7783 / 13644 ツリー ←次へ | 前へ→

【36863】離れたセル範囲の未入力箇所 けい 06/4/17(月) 2:30 質問[未読]
【36864】Re:離れたセル範囲の未入力箇所 Blue 06/4/17(月) 8:59 発言[未読]
【36883】Re:離れたセル範囲の未入力箇所 Kein 06/4/17(月) 12:03 回答[未読]
【36907】Re:離れたセル範囲の未入力箇所 けい 06/4/17(月) 21:42 お礼[未読]

【36863】離れたセル範囲の未入力箇所
質問  けい  - 06/4/17(月) 2:30 -

引用なし
パスワード
   Sub カウント()
Dim a As Range
Dim c As Range
Dim d As Range
Set a = Range("A1:D1")
Set c = Range("F1:H1")
Set d = Range("M1:N1")

Dim b As Range
Set b = Union(a, c, d)
Dim f As Variant

f = WorksheetFunction.CountBlank(b)
MsgBox f
End Sub

a,c,dは入力必須のセルにしたく、未入力があると処理をとめたいコードを書きたいのですが、うまくいきません。UnionとCountBlankの使い方がおかしいのでしょうか。
正しい書き方を教えてください。
よろしくお願いします。

【36864】Re:離れたセル範囲の未入力箇所
発言  Blue  - 06/4/17(月) 8:59 -

引用なし
パスワード
   どうもCountBlankとUnionの組み合わせはできないようです。
なので、連続範囲ごとにCountBlankしていくのはどうでしょうか?

Sub カウント()
  Dim f As Double
  With ActiveSheet
    f = WorksheetFunction.CountBlank(.Range("A1:D1")) + _
      WorksheetFunction.CountBlank(.Range("F1:H1")) + _
      WorksheetFunction.CountBlank(.Range("M1:N1"))
  End With
  MsgBox f
End Sub

【36883】Re:離れたセル範囲の未入力箇所
回答  Kein  - 06/4/17(月) 12:03 -

引用なし
パスワード
   Sub Blk_Count()
  Dim Cnt As Integer
 
  On Error Resume Next
  Cnt = Range("A1:D1, F1:H1, M1:N1") _
  .SpecialCells(4).Count
  If Err.Number = 0 Then
   MsgBox Cnt & " 個のセルが未入力です", 48
  Else
   MsgBox "全て入力済み", 64: Err.Clear
  End If
End Sub

で、どうでしょーか ?

【36907】Re:離れたセル範囲の未入力箇所
お礼  けい  - 06/4/17(月) 21:42 -

引用なし
パスワード
   Blueさん、Keinさん、こんばんは。

早速の回答、助かります。

CountBlankとUnionの組み合わせはできないと判り感謝しています。

また、
エラー処理のコードで書く方法もあるのですね。
考え方の幅がひろがりました。

機会がありましたらまたよろしくお願いします。

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