【Excel VBA】IsBlankをVBAで書く場合の方法をまとめてみた(空白かどうかのチェックを行う)

Last Updated on 2024年10月21日 by らくろぐ

この記事は以下のことが知りたい人におすすめです。

この記事でわかること
  • セルの空白チェックの仕方がわかる
  • IsBlank()の使い方がわかる
  • IsBlankをVBAで記述する場合はどのようになるかわかる
  • IsBlankと似た機能を持つ関数IsEmptyの使い方がわかる
この記事を書いた人
  • 当サイトの管理人
  • ITマイクロ法人運営中
  • ITに関する、日々の便利な情報を発信中

業務や勉強において、ついつい何度も調べてしまったり、伝え聞いた内容を忘れないように、まとめようと心がています。

このサイトに訪れてくださった方の少しでもお役にたてると嬉しいです。

空白かどうかのブランクチェックできるIsBlank

Excelでセルが空白かどうかをチェックすることができる「IsBlank」。Excelで標準の関数です。

IsBlankを使ってのチェック方法や他の同じような機能を持つ関数(IsEmpty、Lenなど)やVBAで実施する場合の記述方法などもご紹介します。

Excelでセルの中身がブランクかどうかをチェックする関数、それがIsBlankですが、単純に空白かどうかを見るだけでなく、隠し文字や空文字が含まれてないかどうかもチェックできます。

これは他の文字コードのファイルからコピペしたなどで、紛れてしまった場合などにも有効です。

また、空白かどうかを使って、他の条件式に展開もでき、とても使い勝手の良い関数です。

IsBlankの使い方

IsBlankは対象となるセルが空白かどうかをチェックし、その結果を「TRUE」または「FALSE」で返します。

  • 空白の場合→「TRUE」
  • 空白でない場合→「FALSE」

この場合、空文字(“”)や隠し文字なども存在すれば含まれていると扱われます。

A1セルには数式IsBlank(B1)が入力されています。この場合のブランクチェックの対象はB1セルです。空白なので数式の結果はTRUEを返しています。

A2セルには数式IsBlank(B2)が入力されています。この場合のブランクチェックの対象はB2セルです。セルには”1”が入力されているため空白ではありません。したがって数式はFALSEを返します。

他のブランクチェック方法

IsBlank以外にもブランクチェックできる方法がいくつかあります。それらを紹介します。

VBAでの記述法

IsBlankの機能をVBAで実行しようとすると、関数としては用意されていません。そのため、VBAでは以下のように記述することでブランクチェックが可能になります。


if( セル.value ="" ) then
 ’処理
else
 ’それ以外の処理
endif

セル.value=”” を違う文字と比較することで空白以外のチェックもできます。

IsEmptyを使った場合

IsmptyはVBAでサポートされている関数です。IsEmpty(セル.value の戻り値がTRUEかFALSEかで判別することが可能です。

 If IsEmpty(セル.Value) Then
   MsgBox "空白です"
 End If
    
 If Not IsEmpty(セル.Value) Then
   MsgBox "空白ではありません"
 End If
    

Len関数を使った場合

Len関数で文字数をチェックする方法もあります。以下のような記述方法になります。

'文字数が0桁かをチェック
 If Len(ActiveSheet.Range("B1")) == 0 Then
  MsgBox "空白です。"
 End If

黄色いセルが空白だった場合、A2にTRUEを返すように、式を記述します。

A1ではB1の文字列の長さをチェックし、戻り値として取得しています。

空白のため、文字列は0となります。結果A1は0となります。

次に、A2でA1の結果をもとに空白かどうかをTRUEとFALSEで応答しています。

この場合、A1が0だったらTRUEを返すので、TRUEとなり、黄色いセルが空白であることが確認できました。

まとめ

エクセルで空白かどうかをチェックする関数、IsBlankの使い方と、これをVBAで行う場合の方法について紹介しました。

空白かどうかをチェックすることは比較的よく使う処理ですが、Excel関数の場合はTRUEかFALSEかを返すので、それだけではシートの処理として物足りない部分もあります。この結果をもって別の処理に展開することが多いでしょう。

VBAであれば、条件式の中で続けたい処理を追加することができるので、処理によってはこちらを使用するほうが便利かもしれません。

エクセル関数であればまたほかの処理も標準で用意されているので、組み合わせることで自分のやりたい処理に置き換えることもできます。

関数で実施するか、VBAを使って行うかはその時の状況によって適宜選択していくべきでしょう。同じような機能をエクセルの関数とVBAとでどうやって表記するか、ほかのケースについてもどんどん紹介していきたいと考えています。

以上、参考になればうれしいです。

ExcelVBAは以下の本を使って勉強しました。フローチャートは図解も多くわかりやすく、おススメです。