業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、罫線を表すBordersオブジェクトのLineStyle(種類)、Width(太さ)、ColorIndex(線色)プロパティ、文字を表すCharacterオブジェクトのFont.ColorIndexプロパティなどの使い方を解説。
Excelを使う上で、セルにデータを入力して表を作り、ヘッダー部分にタイトルを付けて資料を作ることは、業務上よくあるだろう。そんなときは、表の枠線(以下、「罫線」)の色や種類、太さなどを変えたり、タイトルの色を変えたりして装飾を施すことで、見やすい資料にすることができる。
見やすい資料を作るのは業務上必要なことだが、毎回マウス操作で装飾を施すのは、労力が掛かるだろう。こういった作業もマクロにして使い回すことができれば、業務の効率化ができる。
まずは、セル表の罫線にさまざまな装飾を施すマクロを作成してみよう。
罫線の書式(表現方式のこと、色や種類、太さなど)の基本については、記事「セルの数値、フォント、文字位置、背景色、罫線など表示形式/書式設定の使い方」の「セルの罫線の設定」を参照しておいてほしい。
まず、シート内に、図1のようなデータと「罫線を引く」のボタンを配置し、Excelメニューの[開発]→[挿入]と選択して、「罫線の種類」と「罫線の太さ」を選択できるように、2つの「コンボボックス」コントロールを配置する。また、「罫線の色」と「範囲」を入力するセルも用意しておく(図1)。
次に図2のように、「L1:L8」に「罫線の種類」の「定数」を入力しておく。また「M1:M4」に、「罫線の太さ」の「定数」を入力しておく。「N1:N8」には「罫線の種類」の「値」を入力しておく。「O1:O4」には「罫線の太さ」の「値」を入力しておく。
さらに、コンボボックスから選択された「罫線の種類」のインデックスを表示させるために、「P3」のセルを用意しておく。同様に、「罫線の太さ」の選択されたインデックスを表示させるために「Q3」のセルを用意しておく。
「罫線の種類(L列)」の「罫線の種類」の「定数」、「N列」の「罫線の種類」の「値」については、下記表を参照してほしい。
定数 | 値 | 罫線の種類 |
---|---|---|
xlContinuous | 1 | 実線 |
xlDash | -4115 | 破線 |
xlDashDot | 4 | 一点鎖線 |
xlDashDotDot | 5 | 二点鎖線 |
xlDot | -4118 | 点線 |
xlDouble | -4119 | 二本線 |
xlSlantDashDot | 13 | 斜め斜線 |
xlLineStyleNone | -4142 | 線なし |
参考「XlLineStyle 列挙(Excel)- MSDN」 |
「罫線の太さ(M列)」「罫線の太さ」の「定数」、「O列」のセルには、「罫線の太さ」の「値」については、下記表を参照してほしい。
定数 | 値 | 罫線の太さ |
---|---|---|
xlHairline | 1 | 一番細い線 |
xlThin | 2 | 極細 |
xlMedium | -4138 | 中(普通) |
xlThick | 4 | 太線(一番太い線) |
参考「XlBorderWeight 列挙(Excel)- MSDN」 |
以上の準備ができたら、まずは「罫線の種類」のコンボボックスを選択し、マウスの右クリックで[コントロールの書式設定]を選択すると、図3のように[コントロールの書式設定]ダイアログが表示される。
[コントロール]タブを選択し、「入力範囲」の入力ボックスの右端に表示されているアイコンをクリックして、「L1:L8」の範囲を指定する。次に、「リンクするセル」の入力ボックスの右端に表示されているアイコンをクリックして「P3」を指定する。
同じ手順で「罫線の太さ」の「入力範囲」の入力ボックスに「M1:M4」の範囲を指定する。次に、「リンクするセル」の入力ボックスに「Q3」を指定する。
「罫線の種類」と「罫線の太さ」をコンボボックスから選択し、罫線の色には記事「セルの数値、フォント、文字位置、背景色、罫線など表示形式/書式設定の使い方」の「セルのフォント書式設定」の「図4 色のColorIndex」から参照した適当な色番号を入力しておく。
罫線を引く「範囲」を指定して「罫線を引く」ボタンをクリックするコードはリスト1になる。
このようなコンボボックスに適用させるデータは、できるだけ、実際のデータからは離れたセルに入力しておき、データを追加していく表からは見えないようにセルを狭めるなどしておく方が望ましい。ここでは解説用に分かりやすい位置に表示させている。
Option Explicit Sub 罫線を引く() Dim 罫線の種類 As Integer Dim 罫線の太さ As Integer 罫線の種類 = Cells(Range("P3").Value, 14) 罫線の太さ = Cells(Range("Q3").Value, 15) With Range(Range("H8").Value).Borders .LineStyle = 罫線の種類 .Weight = 罫線の太さ .ColorIndex = Range("H7").Value End With End Sub
まず、3・4行目でInteger型変数「罫線の種類」「罫線の太さ」を宣言する。
5行目では変数「罫線の種類」に「Cells({行番号},{列番号})」の書式で、{行番号}にセル「Q3」の値を、{列番号}に「N列」である「14」を指定して、取得した「値」を格納しておく。6行目では変数「罫線の太さ」には同じく「Cells({行番号},{列番号})」の書式で、{行番号}にセル「P3」の値を、{列番号}に「O列」である「15」を指定して、取得した「値」を格納しておく。
8行目では、図1の「範囲」を入力するセル「H8」の値の範囲に対して、罫線を引く。9行目のLineStyleには変数「罫線の種類」を、10行目のWeightには変数「罫線の太さ」を、11行目のColorIndexには図1のセル「H7」に入力された色番号を指定する。
リスト1のマクロを「罫線を引く」ボタンに関連付け、実行した結果は図4のようになる。
図4で「罫線の種類」に「xlLineStyleNone(線なし)」を選択しても、「罫線の太さ」を指定する必要があるため、罫線が非表示になることはない。実線の罫線が表示される。
次に、セル表の上部(ヘッダー部分)のセルに入力されている、表のタイトルとなる文字色を一部変更してみよう。
セルの一部の文字色を変えるには、以下の書式(ここでは、書き方)を使う。
{オブジェクト}.Characters(Start:={Start},Length:={Length}).Font.ColorIndex = {ColorIndex}
{オブジェクト}には対象となるRangeオブジェクトを指定する。{Start}には先頭の文字から始まる文字列範囲を指定する(省略可)。{Length}には取得する文字数を指定する(省略可)。{ColorIndex}には、上記罫線の解説にもあった色番号を指定する。
ここでは、例として「文字の色の一部を変更」シートに「平成26年度売上目標金額」という文字を表示して、その下に、「開始位置」「文字数」「色」を入力するセルを用意し、「実行」ボタンを配置しておく(図5)。
図5のタイトルの「平成26年度」の文字色を「紺系統色」に変更するコードはリスト2になる。
Sub 文字の一部の色を変更() Worksheets("文字の色の一部を変更").Range("D2").Characters( Start:=Worksheets("文字の色の一部を変更").Range("E5").Value, _ Length:=Worksheets("文字の色の一部を変更").Range("E6").Value). _ Font.ColorIndex = Worksheets("文字の色の一部を変更").Range("E7").Value End Sub
「Worksheets("文字の色の一部を変更")シート」を指定していないと、エラーになるので注意が必要だ。
3行目の「Start:=」には「E5」のセルに入力した「1」を指定して、一番先頭の文字を指定する。4行目の「Length:=」には、「E6」のセルに入力した「6」を指定して、先頭から「6文字」を指定する。5行目の文字色の「ColorIndex」には、「E7」のセルに入力した、「紺系統色」の「32」を指定する。いろいろな文字や数値を設定して試してほしい。
このマクロを図9の「実行」ボタンに関連付け、実行した結果は、図6のようになる。
今回は見やすい資料を作成するためのTipsを2つ紹介した。もちろん、この2つを同一のシートに設置して使うこともできるので、適宜カスタマイズしたり組み合わせたりして使ってみてほしい。
薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所
薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。
1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。
2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。
Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。
Microsoft MVP for Development Platforms - Client App Dev(Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
Copyright © ITmedia, Inc. All Rights Reserved.