【VBA】セルが空白なら〇〇するマクロの作り方~サンプル事例を使って解説~

 

セルが空白なら○○という処理をしたい

 

このような問題をVBAで解決する方法をご紹介します。

 

この記事では、

仕事でよく利用される代表的な3つの事例を参考にセルが空白なら〇〇という処理をするVBAの導入方法

を解説しています。

 

3つのサンプル事例がこちら

  • セルが空白なら背景色を赤にする
  • セルが空白なら空白セルをカウントする
  • セルが空白なら別シートのテキスト編集する

 

これらのサンプル事例は実務での導入実績があるもので、

データ管理や書類整理、スケジュール管理などの業務を効率化

することが可能です。

 

記事内の解説では、

コピペで使えるサンプルコード図を使ってVBA導入方法

を紹介していています。

 

VBA初心者だけど「セルが空白なら〇〇という処理をするVBA」を導入したい!なんとしてもエクセル業務の効率をアップさせたい!

と考えている方は是非参考にしてみてください。

 

広告

「セルが空白なら〇〇する」VBAとは?

 

「セルが空白なら〇〇する」という処理は、

関数IFと繰り返し処理(For~Next)を使って、指定範囲を検索し空白なら〇〇する

というVBAです。

 

 

空白なら〇〇するVBAの基本構造はこちら

 

For i = 1 To 10

IF Cells(i,1)="" Then

Cells(i,1).Interior.Color = RGB(255, 0, 0)

Else

EndIf

Next

 

上記基本コードは、

A列の1行目から10行目までの空白セルを赤に塗りつぶす

というVBAです。

 

この基本コードをベースにすることで業務内容に合ったVBA開発ができるようになります。

 

セルが空白なら〇〇するVBAのサンプル事例

 

セルが空白なら〇〇するVBAがどのような処理ができるのか!

を具体的にイメージして頂くために「3つのサンプル事例」を使って処理内容をご紹介します。

 

サンプル事例① セルが空白なら背景色を赤にするマクロ

 

一覧表の行数、列数は変動しても問題ありません。

 

VBA実行結果

VBAの実行結果がこちら

 

空白セルの背景色を一瞬で赤に塗りつぶすことができました。

 

Left Caption

ガッツポーズの人

記入漏れの防止に使えます

 

サンプルVBA

設定されているVBAがこちら

Sub 背景色を赤にする()
    Dim i, j As Long
    g = Cells(Rows.Count, 3).End(xlUp).Row
    r = Cells(3, Columns.Count).End(xlToLeft).Column
    For i = 3 To g
    For j = 3 To r
    If Cells(i, j) = "" Then
    Cells(i, j).Interior.Color = RGB(255, 0, 0)
    Else
    End If
    Next
    Next
End Sub

 

3行目で、3列目の最終行を変数gに格納

4行目で、3行目の最終列を変数rに格納

5行目から12行目で、Cセルから最終セルまでを繰り返し空白なら背景色を赤に変更

という内容です。

 

関連記事「関数IFやFor~Next(繰り返し処理)の使い方」では関数IFとFor~Nextの組み合わせ方法が詳しく紹介されています。

 

 

参考にしてみてください。

 

サンプル事例② 空白セル数をカウントするマクロ

 

VBA実行結果

VBAの実行結果がこちら

 

指定範囲内の空白セルの個数を一瞬でカウントすることができました。

指定範囲が広くなればなるほどVBAの効果を体感できるはずです。

 

サンプルVBA

設定されているVBAがこちら

Sub 空白セル数をカウントする()
    Dim i, j As Long
    g = Cells(Rows.Count, 3).End(xlUp).Row
    r = Cells(3, Columns.Count).End(xlToLeft).Column
    Cells(g + 1, r) = WorksheetFunction.CountIf(Range(Cells(4, 4), Cells(g, r)), "")
    Cells(g + 1, r - 1) = "合計"
End Sub

 

3行目で、3列目の最終行を変数gに格納

4行目で、3行目の最終列を変数rに格納

5行目で、D4セルから最終までの範囲にある空白セルをカウントし最終セルの1行下に結果を表示

6行目で、表示した結果の1つ左のセルに「合計」というテキストを表示

という内容です。

 

サンプル事例③ セルが空白なら別シートのテキストを転記する

 

VBA実行結果

VBA実行結果がこちら

 

7箇所の空白セルにテキストを一瞬で転記させることができました。

「入力忘れ」の防止に効果的です。

 

サンプルVBA

設定されているVBAがこちら

Sub 別シートのテキストを転記する()
    Dim Ash As Worksheet
    Dim Bsh As Worksheet
    Set Ash = ThisWorkbook.Worksheets("別シートのテキストを転記する")
    Set Bsh = ThisWorkbook.Worksheets("背景色を赤にする")
    Dim i, j As Long
    g = Ash.Cells(Rows.Count, 3).End(xlUp).Row
    r = Ash.Cells(3, Columns.Count).End(xlToLeft).Column
    For i = 3 To g
    For j = 3 To r
    If Ash.Cells(i, j) = "" And Bsh.Cells(i, j) <> "" Then
    Ash.Cells(i, j) = Bsh.Cells(i, j)
    Else
    End If
    Next
    Next
End Sub

 

2行目から5行目で、2つのシートを区別し変数「Ash」と「Bsh」に格納

7行目で、3列目の最終行を変数gに格納

8行目で、3行目の最終列を変数rに格納

9行目から16行目で、「別シートのテキストを転記する」Sheet内のセルを検索し空白なら「背景色を赤にする」Sheetの情報を転記する

という内容です。

 

セルが空白なら〇〇するVBAの導入方法

 

VBAの導入方法はどのサンプル事例でもやり方は同じです。

 

なので、

 

「セルが空白なら背景色を赤にするマクロ」を例として導入方法をご紹介していきます。

 

1.VBA編集画面を開く

 

2.標準モジュールを作成する

 

3.標準モジュールにVBAを記入する

 

サンプルコードは上記で紹介しているものをコピペするか、上記の画像を参考にしながらご自分で入力してください。

 

4.ボタンの作成

 

5.作成したボタンにマクロを登録

 

これで「セルが空白なら背景色を赤にするVBA」の導入が完了。

 

手順通り操作すれば簡単に「セルが空白なら〇〇するVBA」を導入することができるはずです。

他のサンプル事例も導入方法は同じで、

Modulに入力するコードを変える

だけで設定可能。

 

上記で掲載しているサンプルVBAを使って是非挑戦してみてください。

 

VBA初心者が効率化マクロを導入する方法

 

VBAなんて扱ったことないけどエクセル作業を自動化するマクロを導入したい!

このような問題を抱えながら日々のエクセル業務をこなしている方がおおくいらっしゃるのではないでしょうか。

 

こんな問題を解決する方法がこちら

  • マクロの開発を外注に依頼する
  • マクロが設定されたエクセルファイルをダウンロードする
  • 参考書やネットでVBAスキルを身に付ける

 

VBAの勉強を始める前は上記の方法で効率化マクロを導入していました。

 

 

 

完成されたマクロを使ってエクセル業務を処理する

作業効率が2倍以上アップ!!

便利すぎて自分でもマクロを設定したいと考え始める

参考書やネットの情報でVBAスキルを身に付ける

マクロ開発を代行できる程のスキルを習得

 

 

 

VBAは

他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

という特徴があります。

 

毎日のルーティーン作業にうんざりしている、だれでもできる単純作業に時間を費やしている、という方はあなたに合った方法でVBAを導入しちゃいましょう。

 

マクロの開発を外注に依頼する

マクロの開発を外注に依頼する導入方法は

VBAを全く扱えない方でもエクセル作業を自動化できる最も簡単な方法

です。

 

「こんなエクセル作業を自動化したい」「作った資料を自動的にPDFで保存したい」「決まった様式に写真を自動で貼り付けたい」

こんな感じで実現したい内容を依頼するだけで業務内容に合ったマクロを開発してくれます。

 

Left Caption

ガッツポーズの人

完成まで本業に集中できるので効率的

 

 

デメリットは、費用がかかることだけ。

開発内容、依頼先によってかかる費用は大きく異なります。

私が会社員の頃利用していた業者さんは1マクロあたり2万円~3万円の費用がかかりました。

 

Left Caption

疑問がある人

ちょっと高くない。。。

 

ちなみに、マメBlogでもエクセルマクロ開発代行サービスを承っています。

開発内容の確認、VBAコードの設定、動作確認後の調整、など全ての工程を私(マメ父ちゃん)が行っているので、

費用が安い!スピード納期!!

でやらせてもらっています。

 

ほとんど独学で身に付けたVBAスキルなので、内容によっては開発できないこともあるのでご了承ください。

 

ご相談、見積もり依頼は完全無料ですので気になる方は下記のリンクよりお問合せ下さい。

 

 

マクロが設定されたエクセルファイルをダウンロードする

VBA初心者でも『マクロが設定されたエクセルファイルをダウンロード』ですぐにエクセル作業を自動化することができます。

 

たとえば、

A4用紙に写真を貼り付けてコメントを入力する作業を自動化したい!という場合、

『写真を貼り付けるマクロ』が設定されたエクセルファイルをダウンロードすれば問題解決です。

 

実際に、『写真を貼り付けるマクロ』をダウンロードして使っている様子がこちら

写真貼付けマクロの使い方を示したイラスト

 

 

Left Caption

ガッツポーズの人

写真貼付け作業の効率がめちゃくちゃアップ

 

 

『マクロが設定されたエクセルファイルをダウンロード』する導入方法は、

VBA初心者でもマクロを導入できる、費用が安い、

というメリットがあります。

 

しかし

VBAに関する情報が多く公開されているとはいえ、ネット上で想定するマクロは見つけることが難しい

というデメリットもあります。

 

Left Caption

ガッツポーズの人

お目当てのマクロが見つかればラッキー

 

個人ブログやファイルを販売できるサイト「note」や「Tips」ではいろんなマクロの情報が掲載されているので是非参考にしてみてください。

 

今までマメBlogで受注した効率化マクロを下記のnoteで掲載していますので併せてチェックしてみてください。

 

 

 

参考書やネットでVBAスキルを身に付ける

先程も紹介しましたが、

VBAは他のプログラミングに比べて参考書やネットで紹介されている情報量が多いので初心者でも導入しやすい

プログラミングです。

 

言い換えると、

情報量が豊富なので自分で勉強できちゃう

ということです。

 

私のVBAスキルはほとんど独学で身に付けたもので、

考えた処理のほとんどをVBAで表現できるレベルにまで到達した!

と思っています。

 

私の作ったマクロをプロのプログラマーが見れば、

お前の書くコードはインチキだ!「変数の宣言」とか「引数」を正しく使えよ!!

と感じるはずです。

 

でも、

私からすればどうでもいい!!!想定した内容を正しく処理できればよくないですか!?

 

独学であっても『写真を貼り付けるマクロ』『全てのシートをPDF出力するマクロ』『連番を振るマクロ』など、

業務内容に合ったマクロを開発できるようになれます。

 

独学でVBAスキルを身に付けるコツは、

エラーが発生してもいいからひたすらコードを書く、なんでもいいからエクセル作業をマクロ化してみる

です。

 

とは言っても、全くの知識0の方は何をすればいいかわからないですよね。

 

VBA知識0の初心者の方は、参考書『たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】』を読んでみてください。

 

VBAの知識0の方でもすいすい読み進められる内容になっています。

やさしい内容にも関わらず「え!!VBAを使えばこんなことできるの!?」と感動すると思います。

 

実際に私はこの参考書を読んでからVBAの勉強を始めました。

 

Left Caption

ひらめく人

VBA学習スタートのきっかけをくれた参考書


 

 

VBAの魅力を発見した後は、

ひたすら自動化したい処理を実現するコードを書くだけ

です。

 

【VBA 写真を貼る】、【VBA PDF出力】、のようにネット検索すれば知りたいコードをすぐにゲットできます。

 

実現したい処理に向かって、「調べる→書いてみる→エラーを改善する→調べる」を繰り返していると

自然といろんなマクロが作れるようになっているはずです。

 

VBAに興味が湧いてきたという方は今からVBA学習をスタートさせちゃいましょう。