セルのスタイルの参照はStylesコレクションで行う
Excelのスタイルはブックに対して行います。そのためスタイルの参照はブック単位になります。
スタイルを参照する場合はWorkbookオブジェクトのStylesコレクションを利用します。
ブックに登録されているスタイルは全てStylesコレクションに格納されています。
ブックに登録されていないスタイルを参照しようとした場合は「実行時エラー’9′: インデックスが有効範囲にありません。」のエラーになります。
構文
1 2 3 4 5 |
'// スタイル名指定時 Property Workbook.Styles(Name) As Styles '// Index指定時 Property Workbook.Styles(Index) As Styles |
Workbook | スタイルを参照するブックを指定します。通常はActiveWorkbookを指定することが多いと思います。 |
Styles | WorkbookオブジェクトのプロパティであるStylesコレクションを指定します。 |
Name | <スタイル名指定時>
参照するスタイルの名前を文字列で「Styles(“test”)」のように指定します。 |
Index | <Index指定時>
参照するスタイルのIDを指定します。IDからどのスタイルなのかは分からないため使うことはまずないと思われます。 |
戻り値 | 参照したスタイルのStyleクラスオブジェクトを返します。
存在するスタイルを参照した場合はそのスタイルのStyleオブジェクトを返しますが、存在しないスタイルの場合は「実行時エラー’9′: インデックスが有効範囲にありません。」になります。 On Error Resume Nextなどのエラー対応をしている場合はNothingが返却されます。 |
サンプルコード
ブックに登録されている全てのスタイルを参照するサンプルです。参照個所を黄色にしています。
For Each、For、Doの3種類のループによる書き方になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub StylesReferTest() Dim s As Style '// Styleクラスオブジェクト Dim i '// ループカウンタ '// For Eachでの書き方 Debug.Print "For Eachでの書き方" For Each s In ActiveWorkbook.Styles Debug.Print s.Name Next '// For Nextでの書き方 Debug.Print "For Nextでの書き方" For i = 1 To ActiveWorkbook.Styles.Count Set s = ActiveWorkbook.Styles(i) Debug.Print s.Name Next '// Do-Loopでの書き方 Debug.Print "Do-Loopでの書き方" i = 1 Do If (i > ActiveWorkbook.Styles.Count) Then Exit Do End If Set s = ActiveWorkbook.Styles(i) Debug.Print s.Name i = i + 1 Loop End Sub |
コード説明
スタイルの参照自体は「Workbook.Styles(xxx)」と書くだけです。
参照結果の戻り値をStyleクラス型の変数に代入する場合は14行目や26行目のようにSetステートメントを使って代入します。