【VBA道場】#30 空白セルを操作する
問題
空白のセルに「欠席」と表示してください。
完成見本
解答
Sub vba_doujyou_30()
'B1~B10のセルの中で空白のセルに「欠席」を入力する
Range("B1:B10").SpecialCells(xlCellTypeBlanks) = "欠席"
End Sub
サンプルファイル(マクロ無)
マクロなしのファイルはこちらからご利用いただけます。
VBA道場30 サンプルファイル(マクロ無)
1 ファイル 8.63 KB
サンプルファイル(マクロ有)
今回のマクロはこちらからダウンロードしてご使用いただけます。
VBA道場30 サンプルファイル(マクロ有)
1 ファイル 13.31 KB
解説
Object.SpecialCells(セルの表示形式,バリアントの型)
※バリアントの型は省略可能
VBA道場16で、セルが空白かどうか判断しました。
’もしA1セルが空白だったら
If Sheets("Sheet1").Range("A1").Value = "" Then
Range("B1").Value = "空白です" ’「空白です」とB1セルに表示
Else
Range("B1").Value = "入力されています" ’空欄でなかったら「入力されています」とB1セルに表示
End If
これよりもさらに簡単に空白セルを操作する方法があります。
それが、SpecialCellsメソッドです。
このメソッドを使うと、空白セルだけを一括で取得できます。
SpecialCellsメソッドは、「ホーム」タブ→「編集」→「検索と選択」→「ジャンプ」を実行して表示される「ジャンプ」ダイアログボックスで「セル選択」を実行したときと同じ働きをします。
では、今回のコードを見ていきましょう。
'B1~B10のセルの中で空白のセルに「欠席」を入力する
Range("B1:B10").SpecialCells(xlCellTypeBlanks) = "欠席"
最初のRangeオブジェクトで、どこの範囲を検索するかを指定します。
今回は、B1~B10セルとします。
続いて、SpecialCellsメソッドを使用します。
今回は空白セルを検索したかったので、「xlCellTypeBlanks」を使用しました。
他にも、SpecialCellsメソッドの引数には下記のようなものが指定できます。
xlCellTypeAllFormatConditions | 表示形式が設定されているセル |
xlCellTypeAllValidation | 条件の設定が含まれているセル |
xlCellTypeBlanks | 空白セル |
xlCellTypeComments | コメントが含まれているセル |
xlCellTypeConstants | 定数が含まれているセル |
xlCellTypeFormulas | 数式が含まれているセル |
xlCellTypeLastCell | 使われたセル範囲内の最後のセル |
xlCellTypeSameFormatConditions | 同じ表示形式が設定されているセル |
xlCellTypeSameValidation | 同じ条件の設定が含まれているセル |
xlCellTypeVisible | すべての可視セル |
そして最後に、取得したセルに対して何を実行するかを書きます。
今回は、空白セルに「欠席」を入力されるように記述しました。
Range("B1:B10").SpecialCells(xlCellTypeBlanks) = "欠席"
おわりに
今回はSpecialCellsメソッドについて学習しました。
SpecialCellsメソッドは、If文を使わなくとも簡単にセルに飛ぶことができるので非常に便利です。
是非使いこなしていきましょう。
今日はここまで!
おすすめ参考書
Amazon
たった1秒で仕事が片付くExcel自動化の教科書
いちばんやさしいExcelVBAの教本
ExcelVBA逆引き辞典 パーフェクト
楽天
いちばんやさしいExcelVBA
|
すらすら読めるExcelVBA
|
VBA逆引き大辞典
|