連載
» 2014年07月28日 18時00分 UPDATE

VBA/マクロ便利Tips:Excelでセル表の枠線やヘッダー部分のタイトル文字に装飾を施す

業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、罫線を表すBordersオブジェクトのLineStyle(種類)、Width(太さ)、ColorIndex(線色)プロパティ、文字を表すCharacterオブジェクトのFont.ColorIndexプロパティなどの使い方を解説。

[薬師寺国安,PROJECT KySS]
「VBA/マクロ便利Tips」のインデックス

連載目次

※本Tipsの環境:Windows 8.1 Enterprise(64ビット)+Excel 2013


Excelで見やすい資料を作るために

 Excelを使う上で、セルにデータを入力して表を作り、ヘッダー部分にタイトルを付けて資料を作ることは、業務上よくあるだろう。そんなときは、表の枠線(以下、「罫線」)の色や種類、太さなどを変えたり、タイトルの色を変えたりして装飾を施すことで、見やすい資料にすることができる。

 見やすい資料を作るのは業務上必要なことだが、毎回マウス操作で装飾を施すのは、労力が掛かるだろう。こういった作業もマクロにして使い回すことができれば、業務の効率化ができる。

Bordersオブジェクトの各プロパティでセルにさまざまな罫線を引く

 まずは、セル表の罫線にさまざまな装飾を施すマクロを作成してみよう。

 罫線の書式(表現方式のこと、色や種類、太さなど)の基本については、記事「セルの数値、フォント、文字位置、背景色、罫線など表示形式/書式設定の使い方」の「セルの罫線の設定」を参照しておいてほしい。

 まず、シート内に、図1のようなデータと「罫線を引く」のボタンを配置し、Excelメニューの[開発]→[挿入]と選択して、「罫線の種類」と「罫線の太さ」を選択できるように、2つの「コンボボックス」コントロールを配置する。また、「罫線の色」と「範囲」を入力するセルも用意しておく(図1)。

ExcelVBATips11_05.png 図1 2つの「コンボボックス」コントロールと「罫線の色」「範囲」を入力するセルを用意する

 次に図2のように、「L1:L8」に「罫線の種類」の「定数」を入力しておく。また「M1:M4」に、「罫線の太さ」の「定数」を入力しておく。「N1:N8」には「罫線の種類」の「値」を入力しておく。「O1:O4」には「罫線の太さ」の「値」を入力しておく。

 さらに、コンボボックスから選択された「罫線の種類」のインデックスを表示させるために、「P3」のセルを用意しておく。同様に、「罫線の太さ」の選択されたインデックスを表示させるために「Q3」のセルを用意しておく。

ExcelVBATips11_06_1.jpg 図2 コンボボックスの「入力範囲」と「リンクするセル」を指定する

 「罫線の種類(L列)」の「罫線の種類」の「定数」、「N列」の「罫線の種類」の「値」については、下記表を参照してほしい。

表1 LineStyleプロパティ(罫線の種類)で指定する値
定数 罫線の種類
xlContinuous 1 実線
xlDash -4115 破線
xlDashDot 4 一点鎖線
xlDashDotDot 5 二点鎖線
xlDot -4118 点線
xlDouble -4119 二本線
xlSlantDashDot 13 斜め斜線
xlLineStyleNone -4142 線なし
参考「XlLineStyle 列挙(Excel)- MSDN

 「罫線の太さ(M列)」「罫線の太さ」の「定数」、「O列」のセルには、「罫線の太さ」の「値」については、下記表を参照してほしい。

表2 Weightプロパティ(罫線の太さ)で指定する値
定数 罫線の太さ
xlHairline 1 一番細い線
xlThin 2 極細
xlMedium -4138 中(普通)
xlThick 4 太線(一番太い線)
参考「XlBorderWeight 列挙(Excel)- MSDN

 以上の準備ができたら、まずは「罫線の種類」のコンボボックスを選択し、マウスの右クリックで[コントロールの書式設定]を選択すると、図3のように[コントロールの書式設定]ダイアログが表示される。

ExcelVBATips11_06_2.jpg 図3 コンボボックスの「入力範囲」と「リンクするセル」を指定する

 [コントロール]タブを選択し、「入力範囲」の入力ボックスの右端に表示されているアイコンをクリックして、「L1:L8」の範囲を指定する。次に、「リンクするセル」の入力ボックスの右端に表示されているアイコンをクリックして「P3」を指定する。

 同じ手順で「罫線の太さ」の「入力範囲」の入力ボックスに「M1:M4」の範囲を指定する。次に、「リンクするセル」の入力ボックスに「Q3」を指定する。

 「罫線の種類」と「罫線の太さ」をコンボボックスから選択し、罫線の色には記事「セルの数値、フォント、文字位置、背景色、罫線など表示形式/書式設定の使い方」の「セルのフォント書式設定」の「図4 色のColorIndex」から参照した適当な色番号を入力しておく。

vba5_04.jpg 色のColorIndex(引用:「ColorIndexプロパティ - MSDN」)

 罫線を引く「範囲」を指定して「罫線を引く」ボタンをクリックするコードはリスト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
リスト1 指定した書式で罫線を引くマクロ

 まず、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のようになる。

ExcelVBATips11_07.png 図4 罫線の各書式を設定して罫線が引かれた

 図4で「罫線の種類」に「xlLineStyleNone(線なし)」を選択しても、「罫線の太さ」を指定する必要があるため、罫線が非表示になることはない。実線の罫線が表示される。

CharacterオブジェクトのFont.ColorIndexプロパティで、セルの一部の文字色を変える

 次に、セル表の上部(ヘッダー部分)のセルに入力されている、表のタイトルとなる文字色を一部変更してみよう。

 セルの一部の文字色を変えるには、以下の書式(ここでは、書き方)を使う。

CharacterオブジェクトのFont.ColorIndexプロパティの書式

{オブジェクト}.Characters(Start:={Start},Length:={Length}).Font.ColorIndex = {ColorIndex}


 {オブジェクト}には対象となるRangeオブジェクトを指定する。{Start}には先頭の文字から始まる文字列範囲を指定する(省略可)。{Length}には取得する文字数を指定する(省略可)。{ColorIndex}には、上記罫線の解説にもあった色番号を指定する。

 ここでは、例として「文字の色の一部を変更」シートに「平成26年度売上目標金額」という文字を表示して、その下に、「開始位置」「文字数」「色」を入力するセルを用意し、「実行」ボタンを配置しておく(図5)。

ExcelVBATips11_08.png 図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
リスト2 文字色の一部を変更するマクロ

 「Worksheets("文字の色の一部を変更")シート」を指定していないと、エラーになるので注意が必要だ。

 3行目の「Start:=」には「E5」のセルに入力した「1」を指定して、一番先頭の文字を指定する。4行目の「Length:=」には、「E6」のセルに入力した「6」を指定して、先頭から「6文字」を指定する。5行目の文字色の「ColorIndex」には、「E7」のセルに入力した、「紺系統色」の「32」を指定する。いろいろな文字や数値を設定して試してほしい。

 このマクロを図9の「実行」ボタンに関連付け、実行した結果は、図6のようになる。

ExcelVBATips11_09.png 図6 文字色の一部が変更された

まとめ

 今回は見やすい資料を作成するためのTipsを2つ紹介した。もちろん、この2つを同一のシートに設置して使うこともできるので、適宜カスタマイズしたり組み合わせたりして使ってみてほしい。

著者プロフィール

kuniyasu.jpg

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。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© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。