
空白セルに0を選択範囲まとめて入力

表の中のセル全てにデータが入力されていれば問題ないのですが、時々空白のままってありますよね。
その時にデータを並べ替えたら空白セルが上位になってしまった経験ありませんか?
空白セルが邪魔している
成績表などでは成績順に並べ替えを行いますが、高得点順に(大きい順)上から並べ替えるのが一般的です。
ところが、全員の点数が入力されていれば問題ないのですが、欠席などで点数が0点ではなく空白の時に問題が発生します。
そうです、空白セルがあるままで並べ替えを行うと、先に(上位に)空白セルの人が、その下に高得点順に並んでしまいます。

空白セルが優先されてしまった為です。
空白セルに0を入れれば解決
そんな時は単純に空白セルを探して数字の0を入れれば解決できます。
が、並べ替える範囲が広い空白セルを探して0入力するの意外とめんどくさいですよね。
そこでVBAコードでしてした範囲【Range(“A1:E10”)】で、空白セルだけ探し出して数字の0を入れましょう。
空白セルだけを見つけて、まとめて一括操作するにはSpecialCellsメソッドを使います。
SpecialCellsメソッド
SpecialCellsメソッドとは、任意の範囲を選んで特定の条件を満たした全て載せるをまとめて見つけ出してくれます。
使い方は簡単で、SpecialCellsのあとに条件を加えて使用します。
ここでは、指定したセルの範囲内で空白セルを見つけ出して欲しいので、xlCellTypeBlanksを付け加えます。
そして、見つけ出した空白セルに数字の0を入れるので、.Value=0を加えます。
ユーザーフォームに配置したコマンドボタンを押した時に実行する出来上がったコードは下記のようになります。
Private Sub CommandButton1_Click()
Range(“A1:E10”).SpecialCells(xlCellTypeBlanks).Value = 0
End Sub
- コマンドボタン1が押されたら
- セルA1~E10の範囲の中で空白セルを見つけたら「0」を入力する
- マクロ終了
これで、空白セルを範囲内から探して0を入れる事ができるようになりましたね。
SpecialCellsメソッドの引数
SpecialCellsメソッドには取得するセルの種類は全部で10種類あります。
SpecialCellsメソッドが引数としている定数 | セルの内容 |
xlCellTypeAllFormatConditions | 条件付き書式が設定されているセル |
xlCellTypeAllValidation | 入力規則が設定されているセル |
xlCellTypeBlanks | 空欄のセル |
xlCellTypeComments | コメントが含まれているセル |
xlCellTypeConstants | 定数が含まれているセル |
xlCellTypeFormulas | 数式が含まれているセル |
xlCellTypeLastCell | 使われたセル範囲内の最後のセル |
xlCellTypeSameFormatConditions | 同じ条件付き書式が設定されているセル |
xlCellTypeSameValidation | 同じ入力規則が設定されているセル |
xlCellTypeVisible | 全ての可視セル |

エラーを防ぐには!
SpecialCellsメソッドで指定した種類のセルが選択範囲にある事が必要な為、選択範囲に該当する種類のセルが無いとエラーになります。
例えば、選択範囲内に空欄セルが無いのにxlCellTypeBlanksで実行するとエラーになります。
