プロが教える店舗&オフィスのセキュリティ対策術

Excel マクロでセル範囲に対して空白かどうかを判定したいです。

ワークシート関数のcountAやcountBlankを使う方法は見つけたのですが、「空白を返す数式を値貼り付け」したときに、「空白ではない」と判断されてしまうようです。

具体的に判定したいことは、下記ページの一番右側の空白かどうかを判定したいです。
https://excel-ubara.com/excelvba4/EXCEL276.html

しかし、「Range(“A1:B10”).Formula = ""」 のような書き方をするとエラーになってしまいます。

どのように書けばよいか、ご教授いただきたくお願いいたします。

A 回答 (1件)

あまり、ややこしく考えないほうがよいと思います。


リンク先の表のような様々な種類の空白値は、まず、"" 長さ0の文字列か、そうでないEmptyの空白か二種類で考えておけばよいです。ところが、Empty というものは、VBAからでは、一回で判定することはできませんから、あえてないものとしてしまうのが一般的です。

>「Range(“A1:B10”).Formula = ""」
>Range.Formula = ""
これは、冗談だとしか思えませんが(^^;
Formula プロパティで空白の判定などありえません。効率が悪すぎます。

'例えば、判定だけなら、このようにします。
Sub Test1()
 If WorksheetFunction.CountBlank(Range("A1:B10")) < 20 Then
  MsgBox "空白でないセルが存在します。"
 End If
End Sub

しかし、以下の方法はできません。
こちらの現象は、特例ですが、SpecialCells は、活性化したセルしか反応しません。セルが活性化していないと、存在していないことになるからです。

Sub Test2() 'NG
 If Range("A1:B10").SpecialCells(xlCellTypeBlanks).Cells.Count < 20 Then
  MsgBox "空白でないセルが存在します。"
 End If
End Sub
    • good
    • 0
この回答へのお礼

お礼が大変遅くなり申し訳ありません。
大変助かりました。
ありがとうございました。

お礼日時:2019/09/16 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています