【Excel VBAの基本 Part5】オブジェクトの状態や属性を指すプロパティをマスター

プログラミング

実習用データのダウンロード

VBAにおけるプロパティとは

Excel VBAのプロパティとは、簡単に言えばオブジェクト(セル、シート、ブックなど)の「状態」や「属性」のことを表します。
Excelという世界において、以下のような例えが分かりやすいでしょう。

  • オブジェクト(物): セル(Range)
  • プロパティ(属性): セルの「値」、セルの「色」、フォントの「太さ」
  • メソッド(動作): セルを「消去する」、セルを「コピーする」

プロパティを操作することは、「セルの見た目や中身を書き換える(または取得する)」ことを意味します。


Rangeオブジェクトの階層構造

オブジェクトの階層構造は、「Applicationオブジェクト」が最上位となっています。
Applicationオブジェクト」はExcelそのものを表します。
それ以下の階層は下図の通りです。

Application」「Workbook」「Worksheet」「Range」オブジェクトと続き、その下にもフォントや罫線などのオブジェクトが存在します。
そのオブジェクトのプロパティを取得したり変更したりすることができます。

フォントの設定を変更する書式
Rangeオブジェクト.Font.プロパティ = 設定値

Rangeオブジェクト」の下の「Fontオブジェクト」の状態に「設定値」を代入する、という意味になります。
例えば「太字(bold)」という状態を代入すると、文字が太字に変更されます。


代表的なプロパティと書き方

Excel VBAでプログラミングでよく使用されるプロパティとその記述の仕方を紹介します。


Fontオブジェクトのプロパティ

フォントのサイズや色、太字などの設定を変更することができます。

フォントの設定を変更する書式
Rangeオブジェクト.Font.プロパティ = 設定値
プロパティプロパティの説明設定値
Sizeフォントのサイズ数値
数値が大きいほど文字が大きい。
Colorフォントの色色を赤(Red)、緑(Green)、青(Blue)の3つの組み合わせで表現するRGB関数
例:【赤】RGB(255, 0, 0)【黒】RGB(0,0,0)
Bold太字True(太字をオン)
False(太字をオフ)

Colorプロパティの色は、「定数」を使用することでも設定することができます。

  • 赤色:vbRed
  • 黒色:vbBlack
  • 青色:vbBlue
  • 白色:vbWhite

などがあります。

Range("A1").Font.Color = vbRed

実習問題1

問題1

セルB1に表示されている文字の大きさを「20」に変更しましょう。


実習問題1の解答

Sub VBA_part5_001()
    'この下から記述しましょう
    Range("B1").Font.Size = 20
    
End Sub

実習問題1の解説

解説

文字のサイズを変更するには「Fontオブジェクト」の「Sizeプロパティ」設定値を変えます。
Fontオブジェクトの文字サイズが「20」に変更され、文字が大きくなりました。


実習問題2

問題2

セルC1に表示されている文字の色を「赤色」に変更しましょう。


実習問題2の解答

Sub VBA_part5_002()
    'この下から記述しましょう
    Range("C1").Font.Color = RGB(255,0,0)
    
End Sub
Sub VBA_part5_002()
    'この下から記述しましょう
    Range("C1").Font.Color = vbRed
    
End Sub

実習問題2の解説

解説

文字の色を変更するには「Fontオブジェクト」の「Colorプロパティ」設定値を変えます。
色の設定の仕方は、「RGB(R,G,B)」か「定数」で指定します。


実習問題3

問題3

セルB3からF3に表示されている文字を全て太字に変更しましょう。


実習問題3の解答

Sub VBA_part5_003()
    'この下から記述しましょう
    Range("B2:F2").Font.Bold = True
    
End Sub

実習問題3の解説

解説

文字を太字に変更するには「Fontオブジェクト」の「boldプロパティ」の設定値に「True」を代入します。
太字を解除するには、設定値に「False」を代入します。
セルの範囲を指定することで、その範囲のFontオブジェクトに太字が反映されます。


罫線を引くBorders

罫線とは、表やセルを囲む、または見映えよく飾るために引く線のことを指します。
情報を整理し視認性を高める役割を持ちます。

その罫線を引くためには、Rangeオブジェクトの下のBordersオブジェクトとそのプロパティを記述します。

罫線を引く書式
Rangeオブジェクト.Borders(罫線を引く箇所の指定).Linestyle = 線の種類

罫線を引く箇所を指定するには、該当の定数を記述します。

定数引く箇所
xlDiagonalUp範囲内の各セルの左下隅から右上への罫線
xlDiagonalDown範囲内の各セルの左下隅から右上への罫線
xlEdgeTop範囲内の上側の罫線
xlEdgeRight範囲内の右端の罫線
xlEdgeBottom範囲内の下側の罫線
xlEdgeLeft範囲内の左端の罫線
xlInsideHorizontal範囲外の罫線を除く、範囲内のすべてのセルの水平罫線
xlInsideVertical範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線
例:C2~G5の範囲の上側の罫線を引く
Range("C2:G5").Borders(xlEdgeTop).LineStyle = xlContinuous

定数を記述をしないことで、指定したセル範囲全体に格子状に罫線を引くことができます。

Rangeオブジェクト.Borders.Linestyle = 線の種類

線の種類は「Linestyleプロパティ」に定数を代入することで決まります。

定数

説明

参考画像

xlContinuous

実線

xlNone

罫線なし

xlDash

破線

xlDot

点線

xlDouble

2本線

例:C2~G5の範囲の上側に点線を引く
Range("C2:G5").Borders(xlEdgeTop).LineStyle = xlDot

実習問題4

問題4

セルB3からF13のセル範囲に格子状に実線を引いて下さい。


実習問題4の解答

Sub VBA_part5_004()
    'この下から記述しましょう
    Range("B3:F13").Borders.LineStyle = xlContinuous
    
End Sub

実習問題4の解説

解説

セル範囲に格子状で罫線を引く場合は「Borders」で罫線を引く箇所を定数で指定する必要はありません。
線の種類は「Linestyleプロパティ」で該当の線の種類の定数を記述します。
実線は「xlContinuous」です。


あるセルを含む連続したセル範囲を取得するCurrentRegion

VBAの「CurrentRegion」は、特定のセルを含む「空白の行と列で囲まれた連続するデータ範囲(アクティブセル領域)」を自動取得するプロパティです。
表全体が選択されるといった認識で問題ないでしょう。

CurrentRegionの書式
Rangeオブジェクト(特定のセル).CurrentRegion.プロパティ = 設定値
Rangeオブジェクト(特定のセル).CurrentRegion.メソッド
例:セルA2を含む表全体を取得する
Range("A2").CurrentRegion

特定のセルは、どれを指定したら良いか。
表の中であればどのセルを指定しても、自動認識をしてその表全体を取得してくれますが、基本的には「表の一番左上のセル」を指定するのが慣例だと覚えておきましょう。

表の隣接するセルに文字列がある場合

取得をしたい表の範囲の隣接するセルに、何か文字列が入力されている場合、そのセルも「表の一部である」と認識をしてしまうので要注意です。
その場合は、1列や1行開けて文字を入力をするようにしましょう。

表と隣接していない場合

表と隣接している場合

A3からF13の範囲が取得される

A1からF12までの範囲が選択されてしまう。


実習問題5

問題5

セルB3を含む表全体に格子状に破線の罫線を引いて下さい。


実習問題5の解答

Sub VBA_part5_005()
    'この下から記述しましょう
    Range("B3").CurrentRegion.Borders.LineStyle = xlDash
    
End Sub

実習問題5の解説

解説

特定のセルは、表の一番左上のセルであるB3を指定します。
CurrentRegionによってB3を含む表全体が取得し、BordersLinestyleプロパティで「xlDash」で破線を引きます。


実習解答データのダウンロード


タイトルとURLをコピーしました