本コーナーでは、私が普段実務で手作業の自動化ツールを作成する中で実装している
処理の一部をピックアップし、掲載用にカスタマイズしたものをご紹介していきます。
全て私の実務ベースで使っているものなので、使いこなすことが出来れば、必ずや
手作業の自動化に一役買ってくれる内容ばかりと勝手に自負しています。
「本だけじゃなくてExcel VBAを実践的に勉強してみたい!」
「ハードル高くて苦手だったけどもう一度VBAを勉強してみたい!」
「実務で役に立つVBAを学びたい!」
そんな方々の学習意欲向上の一助になれば大変嬉しく思います。
おススメ書籍
今回のテーマはこちらです👇
#7:罫線を作成/削除する
Excelを使って罫線を引く、削除するシーンは結構多いと思います。少ない量であれば
手作業で対応するのも一つの選択肢としてありだと思いますが、例えば数万の行や列
ともなればそれはもう大変です💦今回は、罫線を引く/削除する最大行列数をPG内
に予めパラメータとして持たせ、各種ボタンを押下することで罫線を引く/削除を
切り替えるマクロについてご紹介します。
ツールの全体像
まずは任意のエクセルシートに上記のように罫線作成用、削除用のコントロールボタン
を2つ配置しておきます。本ツールのVBAコードは以下の通りです。
VBAコード ※パソコンでの閲覧推奨
Option Explicit '=================================================== 'ツール名:罫線の作成・削除ツール(まえきんブログ掲載用にカスタマイズ) '作成日:2022/05/02 '処理概要:罫線の作成・削除 '付属機能:なし '作成者:まえきん '=================================================== '=================================================== '定数宣言 '=================================================== Const MaxRows As Integer = 10 '罫線作成/削除の最大行数 Const MaxColumns As Integer = 3 '罫線作成/削除の最大列数 'シート名 Const KeisenSheet As String = "罫線作成・削除シート" '=================================================== '関数名 :メイン関数(罫線作成ボタン) '処理内容:罫線を引く 'トリガー:罫線作成ボタンを押下した際にコールされる '引数 :なし '戻り値 :なし '=================================================== Private Sub CommandButton1_Click() '---------- '変数宣言 '---------- Dim i As Integer 'ループ変数(行) Dim j As Integer 'ループ変数(列) '---------- '罫線の作成 '---------- For i = 2 To MaxRows For j = 1 To MaxColumns With Worksheets(KeisenSheet) '罫線を引く .Cells(i, j).Borders.LineStyle = xlContinuous End With Next j Next i '---------- '各種ボタンの有効化/無効化 '---------- '罫線作成ボタンを無効化 CommandButton1.Enabled = False '罫線削除ボタンを有効化 CommandButton2.Enabled = True '---------- '処理完了通知 '---------- MsgBox "罫線の作成が完了しました!" End Sub '=================================================== '関数名 :メイン関数(罫線削除ボタン) '処理内容:罫線を削除 'トリガー:罫線削除ボタンを押下した際にコールされる '引数 :なし '戻り値 :なし '=================================================== Private Sub CommandButton2_Click() '---------- '変数宣言 '---------- Dim x As Integer 'ループ変数(行) Dim y As Integer 'ループ変数(列) '---------- '罫線の削除 '---------- For x = 2 To MaxRows For y = 1 To MaxColumns With Worksheets(KeisenSheet) '罫線を削除 .Cells(x, y).Borders.LineStyle = False End With Next y Next x '---------- '各種ボタンの有効化/無効化 '---------- '罫線作成ボタンを有効化 CommandButton1.Enabled = True '罫線削除ボタンを無効化 CommandButton2.Enabled = False '---------- '処理完了通知 '---------- MsgBox "罫線の削除が完了しました!" End Sub
VBAコード解説
メイン関数(罫線作成/削除ボタン)
罫線の作成/削除
罫線を必要な領域だけ引きたいので、For文の2重ループを使って罫線を引きたい最大の
行列数について指定します。(今回は定数MaxRows = 10、MaxColumns = 3で設定)
ただし、罫線を引く行については2行目から始まるので実際に罫線が引かれる行数は
指定値 – 1になることに注意です。次に.Cells(i, j).Borders.LineStyle = xlContinuousの
部分で「LineStyle」プロパティに適切な値を設定します。デフォルトでは罫線を
表示しない「xlLineStyleNone」が設定されているので、ここでは実線(細)を
引くように設定しています。(定数「xlContinuous」のこと)他にも破線の
「xlDash」や点線の「xlDot」等種類は様々です。興味が湧いた方は他の定数値も
是非調べてみてください。逆に、罫線を削除したい場合は、LineStyleを「False」
に設定することで実現可能となります。
各種ボタンの有効化/無効化
罫線の作成・削除処理のダブり実行を防ぐため、いずれかの処理を実行した後は
該当の実行ボタンを無効化する処理を実装しています。こんな感じです👇
罫線作成ボタン押下→罫線削除ボタン有効化(罫線作成ボタンは無効化される)
罫線削除ボタン押下→罫線作成ボタン有効化(罫線削除ボタンは無効化される)
マクロ実行結果
罫線作成ボタン押下
処理完了通知
罫線削除ボタン押下
処理完了通知
上記の通り、結果が得られましたでしょうか😊
今回は説明する都合上、罫線作成/削除の機能をそれぞれコントロールボタンを
分けて作成しましたが、1つの実行ボタンで作成/削除のON/OFFを切り替える
ことももちろん可能です。むしろその方がツールとしては使い勝手がよいので
そちらが推奨されるべき実装方法ですね!PG内に保有している行列数も動的に
設定できるようになれば、ツールとしての汎用性もさらに上がりそうです✨
コードの可読性も考慮して、似たような処理はサブルーチン化もありですね!
また機会があれば、それらのお話もいずれ。
今回はこれで以上です😊
最後まで読んで頂きありがとうございました!ではまた!
コメント