セルのスタイルの追加を行うAddメソッド
Excelのスタイルはブック単位に登録されます。
スタイルを登録したい場合はStylesコレクションのAddメソッドで追加するスタイル名を指定し、フォントや色などを設定します。追加するスタイルの元となる既存スタイルを指定することも可能です。
追加する名前が既に存在する場合は登録できず、「実行時エラー’1004′: StylesクラスのAddメソッドが失敗しました。」のエラーになります。
構文
1 |
Function Workbook.Styles.Add(Name As String, [BasedOn]) As Style |
Workbook | スタイルを追加するブックを指定します。通常はActiveWorkbookを指定することが多いと思います。 |
Styles | WorkbookオブジェクトのプロパティであるStylesコレクションを指定します。 |
Name | 追加するスタイルの名前を指定します。 |
BasedOn | 省略可能です。追加するスタイルの元となるスタイルが設定されているセルを指定します。このパラメータを設定することはあまり無いとは思いますが、BasedOnを指定する場合はコードの書き方が変わりますので注意が必要です。 |
戻り値 | Addメソッドの戻り値は引数Nameで指定した追加スタイルのStyleオブジェクトが返されます。
ただし、BasedOnを指定した場合はStyleオブジェクトのNameプロパティは未設定になります。 |
サンプルコード
以下にサンプルコードを2つ紹介します。1つは引数のBasedOnを指定するコードで、もう1つが指定しないコードです。
BasedOnを指定する場合と指定しない場合では追加スタイルへのフォントなどを指定する方法が異なるため、それぞれ紹介します。
BasedOnを指定する場合
1 2 3 4 5 6 7 8 9 10 |
Sub StyleAddBasedOn_On() Dim s As Style Call ActiveWorkbook.Styles.Add(Name:="追加スタイルB", BasedOn:=Range("A1")) Set s = ActiveWorkbook.Styles("追加スタイルB") s.Font.Name = "Arial" s.Font.Size = 9 s.Interior.Color = RGB(200, 100, 80) End Sub |
BasedOnを指定しない場合
1 2 3 4 5 6 7 8 |
Sub StyleAddBasedOn_Off() Dim s As Style Set s = ActiveWorkbook.Styles.Add(Name:="追加スタイルA") s.Font.Name = "Arial" s.Font.Size = 9 s.Interior.Color = RGB(150, 80, 200) End Sub |
コード説明
BasedOnの有無の違い
まず、BasedOnの有無による違いを説明します。
BasedOnの有無によるコードの違いは、指定ありの場合はStylesプロパティを再取得する必要がありますが、指定なしの場合は不要です。
この違いの理由は、BasedOnを指定しない場合はNameで指定したスタイル名が戻り値のStyleオブジェクトとして返却されますが、BasedOnを指定した場合はStyleオブジェクトのスタイル名は未設定となるためです。これはバグ(実装漏れ)だと思われます。
コード内容
2つのコードどちらも、Styleオブジェクトを取得してからフォントなどの設定を行います。Styleオブジェクトの取得方法はBasedOnありの場合はStylesプロパティで取得し、BasedOnなしの場合はAddメソッドで取得します。
あとはStyleオブジェクトのフォントや背景色や罫線(Border)など必要な設定を行います。