記事キャッチ画像  (20)  「空白セル」を判断する方法! 

 1. セルの値が「空白」かどうか、判断する 

 2. 数式の結果が「空白」になる場合を区別する方法 

  「広告」  
 

 (20)  「空白セル」を判断する方法! 

Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。 

Excel 2016 for Mac 環境での説明となりますので、 Mac版 Excel 2011 では( VBA が利用できますが )同じ結果にならない場合があるかもしれません。

現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)

( ユーザー定義関数 のVBAコードを含んだ)前回使用した XLSM ファイルを、「マクロを有効」にして開きます。

[ alt ] + [ F11 ] にて VBE を開き、Module1 の最後に以下の VBAコードを入力するかコピーして貼り付け。

Sub TestEmpty()

    Dim aRange As Range

    Range("D11").Formula = "=IF(D1 <= 5,"""",""n > 5"")"
    Range("D11").Copy
    Range("E11:H11").Select
    ActiveSheet.Paste

    Range("A11:H11").Select

    For Each aRange In Selection
        If aRange.Value = "" Then
            MsgBox aRange.Address(False, False)
        End If
    Next aRange

    Range("A11:H11").Select

    For Each aRange In Selection
        If aRange.Value = "" Then
            If aRange.HasFormula = False Then
                MsgBox aRange.Address(False, False)
            End If
        End If
    Next aRange

    Range("E11").Select

End Sub


 1. セルの値が「空白」かどうか、判断する 

57

17


イミディエイトウィンドウから call testempty() を実行する直前の画面。


セルの値が「空白」かどうか、判断するのは簡単だ。
実は、この VBA入門連載でも 既に使用しており、 ""  かどうか 試せば良い。
1つめの For Each ループ内 「条件判断式」を参照して欲しい。

しかし、「数式の結果が空白」になる場合も含まれるため、注意が必要!


 2. 数式の結果が「空白」になる場合を区別する方法 


10

イミディエイトウィンドウから call testempty() を実行した直後の画面。
「D11:H11」セル全てに 数式 が設定された事を確認して欲しい。

Range オブジェクト の Formula プロパティ にて、VBAでも「数式」の設定が可能だ。
数式は文字列で与えるため、VBA だと文字列の前後をダブル・コーテーションで囲む必要がある。
文字列の末尾を区別するため、文字列内にダブル・コーテーションを含める場合はダブル・コーテーションを2つ続けて記入するルールとなっている。
間違えないで頂きたいのは、2文字で「ダブル・コーテーション1文字」を示していることだ。

その後の3行のコードは
「D11」セルをコピー
「E11:H11」セルをマウスにて選択
ペースト(貼り付け)操作の実行
を VBA 化したもの。

結果、「D11」セルに設定した数式も含めて、「E11:H11」セルにコピーされる。

2つめの For Each ループ内 「条件判断式」を参照して欲しい。
If 文をネストして、数式を持たない場合の AND 条件を追加している。
Range オブジェクト の HasFormula プロパティ は数式を持つ場合 True を、数式を持たない場合は False を返す。
条件式内の「 = True 」は省略可能なため、VBA記述に慣れてくると Not にて反転し、
If Not aRange.HasFormula Then … と記述する場合が多い。

 HasFormula プロパティ の値を確認すれば 数式の有無が判断可能なため、セルの値が「空白」かどうかと併せてチェックすれば良い。



次回から、 ワークシートのイベントプロシージャが Windows版のように動作するか、テストします!


お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)


最後まで読んでいただき、ありがとうございます。
ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル
 

  「広告」