データがあるセルだけに書式を設定したい場合は、次の流れで処理を行います。
- UsedRangeプロパティでデータがあるセル範囲を取得
- 取得したセル範囲を1つずつデータが入力されているかチェック
- データが入力されているセルに書式を設定する
1.UsedRangeプロパティでデータがあるセル範囲を取得
ワークシートのUsedRangeプロパティで取得できるセル範囲は四角いエリアなので、下のようなシートがあった場合、B2~E6が対象範囲として取得されます。
なので、次の「2.取得したセル範囲を1つずつデータが入力されているかチェック」でセル1つずつ処理をおこないます。
2.取得したセル範囲を1つずつデータが入力されているかチェック
取得したエリア内には空白セルも含まれています。
なので繰り返し処理で、取得したセル範囲を1つずつデータが入力されているかチェックします。
「UsedRangeプロパティなんで使わないで、最初からワークシート全部のセルをデータが入力されているかチェックすればいいじゃん?」と思うかもしれませんが、処理時間が遅くなってしまいます。
UsedRangeプロパティである程度の範囲にしぼってあげるのが、処理時間を早くするポイントです。
3.データが入力されているセルに書式を設定する
背景色であればInterior.Colorプロパティ、文字色であればFont.Colorプロパティなどを使って書式を設定します。
代表的な書式を次のサンプルコードで設定しています。
コード
サンプルではActiveSheetでシートを指定しています。
他のシートを指定したい場合は、Worksheets(“シート名”)に書きかえてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
Dim rng As Range '取得したセル範囲から1つのセルを格納する変数 '1.UsedRangeプロパティでデータがある範囲を取得 For Each rng In ActiveSheet.UsedRange '2.取得したセル範囲を1つずつデータが入力されているかチェック If rng.Value <> "" Then '3.データが入力されているセルに書式を設定する '------------------------------------------------ '背景色 '------------------------------------------------ '定数で文字色を赤にする rng.Interior.Color = rgbBlue 'RGB関数で文字色を赤にする rng.Interior.Color = RGB(0, 0, 255) '------------------------------------------------ '文字色 '------------------------------------------------ '定数で文字色を赤にする rng.Font.Color = rgbRed 'RGB関数で文字色を赤にする rng.Font.Color = RGB(255, 0, 0) '------------------------------------------------ '太字、斜体 '------------------------------------------------ '太字にする rng.Font.Bold = True '斜体にする rng.Font.Italic = True '------------------------------------------------ 'フォント名、フォントサイズ '------------------------------------------------ 'フォントをメイリオに変更 rng.Font.Name = "メイリオ" 'フォントサイズを20に変更 rng.Font.Size = 20 '------------------------------------------------ '文字に下線、取り消し線 '------------------------------------------------ '下線 rng.Font.Underline = xlUnderlineStyleSingle '取り消し線 rng.Font.Strikethrough = True '------------------------------------------------ '文字の縦、横方向 '------------------------------------------------ '下詰め rng.VerticalAlignment = xlBottom '右揃え rng.HorizontalAlignment = xlRight '------------------------------------------------ 'その他 '------------------------------------------------ '「折り返して全体を表示する」 rng.WrapText = True '「縮小して全体を表示する」 rng.WrapText = False rng.ShrinkToFit = True End If Next |
各書式の詳細は、以下のリンクを参考にしてください。
- 【VBA】背景色を変更する
- 【VBA】文字色を変更する
- 【VBA】文字のフォントを変更する
- 【VBA】文字のフォントサイズを変更する
- 【VBA】文字に下線を設定する
- 【VBA】文字に取り消し線を設定する
- 【VBA】文字を「折り返して全体を表示する」に変更する
- 【VBA】文字を「縮小して全体を表示する」に変更する
- 【VBA】文字の横方向の配置を変更する
- 【VBA】文字の縦方向の配置を変更する