エクセル実践塾 > エクセル実践塾2016

選択中のセル範囲に含まれる空セルを、 マクロ処理の対象から除外したい

 

空セルでないことを条件に、 マクロを実行するよう、 If文を追加します

If文は、次のような形で使います。

If 論理(条件)式 Then

   行う処理

End If

空セルは""で表されるので、 空セルでないことを表す論理式は次のようになります。

c <> ""

※cは、任意のセルを表す変数


 

 

@作例のマクロは、左図のようなコードになっています

選択中のセルすべてで-100の演算を行い、その結果を隣接セルに表示するマクロです。

 

 

 

A空セルの含まれるセル範囲でこのマクロを実行すると・・・

 

 

B左図のようなエラーで、マクロが中断されます

 

C何も入力されていないセルは0として計算されますが、数式で空セルにしている場合にエラーとなります

D左図のようなIf文を挿入することで、このエラーと、無用な演算を回避できます

If文で、セルが空でないとき(c <> "")を条件にすることで、空セルでないときにだけ、End Ifまでの処理が行われるようになります。

E上記のマクロなら、空セルすべてを、マクロ処理から除外できます

Sub PrintSelect()

   Dim i As Byte
   Dim r As Range

   For Each r In Selection

      If r <> "" Then

        i = r.Value
        ActiveWindow.SelectedSheets.PrintOut from:=i, to:=i

      End If

   Next

End Sub

【参考】「指定したページだけを、とびとびで印刷したい」で解説したマクロにおいて、空セルを含むセル範囲を選択して実行する場合には、左のようなIf文を追加すればエラーを回避できます

""は、空セルを表します。一致しないことを意味する比較演算子 <> でセルと比較することにより、空セルでないときにだけ、End Ifまでの処理が行われるようになります。

   
   
   
   
   
   
   
 

   

   

 

●選択中のセル範囲に対するマクロの作成と編集を解説する動画です

Selectionの基本的な使い方から、Ifによる条件付きの処理までを、段階的に解説しています。

関連する他のページ

出退の時刻を簡単に記録したい
簡単なマクロを作れば、 「出社」や「退社」をクリック(タップ)するだけで現在日時を入力できる タイムカードを用意できます

『名前』に右隣セルの『ふりがな』を登録したい
簡単なマクロを作って、ふりがな登録する方法があります

マクロを作りたい
「開発」タブを表示しておけば、 そこから「Visual Basic」を実行してマクロを作ることができます

ブックを開いたときの新規シート自動挿入を、1日1枚に制限したい
新規シートの名前に日付を加え、マクロ実行時にその存在の有無を確認するようにします

ブックを開いたときに、新規シートを先頭へ挿入したい
ThisWorkbookのOpenプロシージャに該当コードを記述します

マイナス値をゼロに置換したいC
If...ThenステートメントによるVBAマクロを使えば、 マイナス値をまとめてゼロに置換できます

“縮小して表全体を表示する”のマクロを、 クイックアクセスツールバーから実行したい
クイックアクセスツールバーにマクロを登録すれば、 マウスからでも、キーボードからでも、簡単に実行できるようになります

“縮小して表全体を表示する”のマクロを使って、表の選択から一気に処理したい
Range.CurrentRegion プロパティを使えば、 アクティブセル領域となっている表全体をマクロで選択できます

“縮小して表全体を表示する”を、 ショートカットキーですばやく実行したい
実行手順をマクロとして記録すれば、 ショートカットキーでその一連の手順をすばやく実行できるようになります

“セキュリティの警告”が表示されるんだけど・・・
マクロを含むブックを開くときには、 注意を促すべく、「セキュリティの警告」が表示されます

マクロ有効ファイルって何?
マクロを含むブックは、 マクロ有効ファイル(マクロ有効ブック)として保存しなければ、 マクロが失われてしまいます

100行程度の表で、5行おきに、新しい行を挿入したい
あまり大きくない表でのパターン化された処理なら、 一定の手順をマクロ記録すると便利です

オートシェイプをクリックするたびに、枠線の表示と非表示を切り替えたい
枠線の表示と非表示の切り替えマクロを、 オートシェイプに登録すれば、 オートシェイプをクリックするだけでそのマクロが実行されるようになります

オートシェイプの枠線の表示と非表示を、一つのマクロで切り替えたい
If〜Then〜Elseの構文を使えば、 オートシェイプの状態に応じて、表示と非表示を一つのマクロで切り替えられます

オートシェイプの枠線の表示の有無を、マクロで切り替えたい
Shape.LineのVisibleプロパティの設定を変えることで、 枠線を表示したり非表示にしたりすることができます

マクロを右クリックで実行したい
Worksheet_BeforeRightClickイベントのプロシージャにマクロを記述すると、 指定シートを右クリックしたときにそのマクロが実行されます

ブックを閉じるときに、マクロを自動的に実行したい
そのブックのWorkbook.BeforeClose イベントに、マクロを実行するコードを記述します

2つのフォルダへの保存マクロを、汎用的なものにしたい
ファイル名の部分を、 編集中のブックの名前を表すActiveWorkbook.Nameにすると、 編集中のブックならどれでもマルチ保存が可能になります

マクロ実行時に表示されるダイアログボックスを無視したい
Application.DisplayAlerts プロパティをFalseにすると、 マクロの実行中に警告やメッセージが表示されなくなります

編集中のブックを、現在のフォルダとは別のフォルダにも、すばやく保存したい
手間のかかる操作は、マクロ化すれば、簡単に処理できるようになります

ブックにたくさんのシートがあり、 それぞれのB2セルに入力してあるデータを、それぞれのシートの名前にしたい
For Each...Next ステートメントを使えば、 編集中のブックに含まれるすべてのシートを対象にして、同じ処理を実行することができます

マクロのコードを、見た目にわかりやすく、簡潔に記述したい
With ステートメントを使えば、作業の対象となるオブジェクトの記述が1回で済みます

B2セルに入力してあるデータを、そのシートの名前にしたい
シートの名前は、Worksheet.Name プロパティで変えることができます

リスト内の各データを、順番に個別で表示したい
専用のユーザーフォームにスクロールバーを追加すれば、 リスト内のデータを順番に表示できます

リスト内の各データを、必要に応じて個別で表示したい
マクロを使えば、ダブルクリックしたデータを、 専用のユーザーフォームで表示することができます

指定したページだけを、とびとびで印刷したい
マクロを使えば、指定したページだけを連続して印刷することは可能です

どのブックからでも利用できるマクロを作りたい
「個人用マクロブック」に登録すれば、 どのブックからでもそのマクロを実行できるようになります

 

 

出前館

アウトドア&フィッシング ナチュラム