公開日2021.10.20
最終更新日2022.10.05
どうも、最近、綾辻行人さんの『館』シリーズのミステリを読み漁っているつづりです。社会人になってから本を読むペースが落ちてしまい、月に3~5冊程度しか読めていませんが、読書の秋になったので、月10冊ぐらいは読んどきたいですね。
とまあ、雑談はこのくらいにして、VBAをマスターしようの第五回目になります。今回はこれまでに説明したものだけで簡単な表のマクロを作成していきたいと思います。何故表を作成にしたのかと言うと、筆者の経験的にも現場で表のマクロを作成する機会が多かったからです。※補足:普通に枠組みだけの表を作成するということはほぼほぼなく、もっと面倒くさいものばかりでしたが。
ここまでできるようになれば、まずは最低限VBAを触れますと言ってもいいかもしれません。(最も、まだまだ説明しなければならないものは沢山ありますが、、、)
なにはともあれ、やっていきましょう。
表のマクロ作成
先に今回の作成するものの結果を見せておきます。その方がイメージをつけやすいと思います。
こんな感じで何もないエクセル画面からマクロを実行させることで、、、
こんな表を一瞬で作れるようになります。
これぐらいの表の作成などであれば、これまでに説明した範囲でも十分作成することができます。
マクロの解説
では、次に書いたコードをひとつずつ解説していきたいと思います。
ちなみに今回かいたコードは冒頭で書いた通り全てVBAをマスターしよう①~④で説明させてもらったもののみになるので、内容を把握できている場合、そもそもこれぐらい知っているという方は、読み飛ばしていただいても問題ありません。
Sub 表()
'表題の入力
Cells(1, 1) = "表タイトル"
'見出し行に文字入力
Cells(2, 1) = "No."
Cells(2, 2) = "見出し1"
Cells(2, 3) = "見出し2"
Cells(2, 4) = "見出し3"
Cells(2, 5) = "見出し4"
Cells(2, 6) = "見出し5"
'A列に数字を入力
Cells(3, 1) = "1"
Cells(4, 1) = "2"
Cells(5, 1) = "3"
Cells(6, 1) = "4"
Cells(7, 1) = "5"
Cells(8, 1) = "6"
Cells(9, 1) = "7"
Cells(10, 1) = "8"
Cells(11, 1) = "9"
Cells(12, 1) = "10"
'タイトルの文字サイズ20
Cells(1, 1).Font.Size = 20
'見出し行の文字サイズ12
Range(Cells(2, 1), Cells(2, 6)).Font.Size = 12
'タイトル太字
Cells(1, 1).Font.Bold = True
'見出し行の文字太字
Range(Cells(2, 1), Cells(2, 6)).Font.Bold = True
'範囲内に罫線を引く(格子状)
Range("A2:F12").Borders.LineStyle = True
'範囲内に罫線を引く(外側など太線に変更)
Range("A2:F12").Borders(xlEdgeTop).Weight = xlThick
Range("A2:F12").Borders(xlEdgeLeft).Weight = xlThick
Range("A2:F12").Borders(xlEdgeBottom).Weight = xlThick
Range("A2:F12").Borders(xlEdgeRight).Weight = xlThick
Range("A2:F2").Borders(xlEdgeBottom).Weight = xlThick
End Sub
値の入力
上から順にみていきます。
まずは、値の入力です。値を入れたいセルを選択して、『=』より右辺に入力したい文字を入力しています。今回はCellsプロパティで指定していますが、Rangeプロパティで指定しても問題ありません。
本マクロではよくある表の形として、横列に見出し、縦列に数字を入力しています。
基本の型:Range(“指定したいセル”).Value = 指定したい内容
Cells(行,列).Value = 指定したい内容
'表題の入力
Cells(1, 1) = "表タイトル"
'見出し行に文字入力
Cells(2, 1) = "No."
Cells(2, 2) = "見出し1"
Cells(2, 3) = "見出し2"
Cells(2, 4) = "見出し3"
Cells(2, 5) = "見出し4"
Cells(2, 6) = "見出し5"
'A列に数字を入力
Cells(3, 1) = "1"
Cells(4, 1) = "2"
Cells(5, 1) = "3"
Cells(6, 1) = "4"
Cells(7, 1) = "5"
Cells(8, 1) = "6"
Cells(9, 1) = "7"
Cells(10, 1) = "8"
Cells(11, 1) = "9"
Cells(12, 1) = "10"
文字のサイズ
続いて文字のサイズです。文字関連の指示は『Font』を使い、サイズであれば、そのまんまの『Size』を使用します。また、複数範囲を選択してまとめて文字のサイズを変更することも可能です。
特にサイズに決まりなどはありませんが、タイトル、見出しの文字については通常よりも大きくした方が見やすく、見栄え的にも良いです。
基本の型:対象のセル(範囲選択も可能).Font.Size = 設定値(整数)
'タイトルの文字サイズ20
Cells(1, 1).Font.Size = 20
'見出し行の文字サイズ12
Range(Cells(2, 1), Cells(2, 6)).Font.Size = 12
太字
太字にしたい場合は、サイズと同じように『Font』を使用し、その次につける部分を『Bold』にします。
斜字など太字以外にしたい場合については『Bold』の部分を変えることで変更させることができます。
太字についても、見やすさの為、見出し、タイトル行などは太字にすることをお勧めします。
基本の型:対象のセル(範囲選択も可能).Font.Bold = True
'タイトル太字
Cells(1, 1).Font.Bold = True
'見出し行の文字太字
Range(Cells(2, 1), Cells(2, 6)).Font.Bold = True
罫線
最後に罫線についてになります。罫線関連のコードは『Borders』を使用し、それぞれ対応したいことによってその後ろが変わってきます。また、罫線も文字などと同じように複数範囲をまとめて操作することが可能です。
基本的に表では色を変えることは余りありませんが、外枠、見出し部分などは通常の罫線よりも太くすることで見やすくしています。
基本の型:Range(範囲).Borders(引きたい箇所).対応したいこと(線、色、太さなど) = 種類
'範囲内に罫線を引く(格子状)
Range("A2:F12").Borders.LineStyle = True
'範囲内に罫線を引く(外側など太線に変更)
Range("A2:F12").Borders(xlEdgeTop).Weight = xlThick
Range("A2:F12").Borders(xlEdgeLeft).Weight = xlThick
Range("A2:F12").Borders(xlEdgeBottom).Weight = xlThick
Range("A2:F12").Borders(xlEdgeRight).Weight = xlThick
Range("A2:F2").Borders(xlEdgeBottom).Weight = xlThick
おわりに
マクロの解説については以上になります。案外、表を作成するのは簡単にできることがわかってもらえたのではないかと思います。
ただ、今回作成したマクロでは、実際に現場などで使用することは難しいです。
厳密に言うと、大枠として利用することは可能ですが、細部のカスタマイズが必要になってきます。
例えばですが、このマクロを使用してデータも入力した表を作ろうとしましょう。表の部分はマクロで自動でやってくれますが、このままだと中身については手動で入力することになりますよね。
多くの場合、表の枠組みよりも時間がかかるのは中身の入力です。だったらその中身のデータもマクロで入力してくれるようにする必要が出てくるわけです。
さらに、今回のマクロでは表の大きさを固定して作成しましたが、実はこれもあまりよくありません。
勿論、形が今後も変わらない表であれば、固定してしまって問題ないのですが、表にしたいデータの量が日々変動するなどの場合も往々にありえます。そうなってくると、固定した表では、欄が余ったり、反対に表からデータが飛び出してしまったりしてしまうわけです。
というわけで、次回からは、より実践的なマクロ作成に必要になってくるコードなどを紹介していきたいと思います。ただ、一つ覚えておいて欲しいのは、この表が作成できたらVBAの基礎レベルの情報はある程度理解できたことになります。なので、そこは是非胸を張ってVBAを触れますと公言してください。
では、長々とありがとうございました。