Excel VBA | Range のプロパティ(Value, Formula, Font, Interior など)

VBA
スポンサーリンク

はじめてのVBAでつまずきやすいのが「Range(レンジ)」の扱いです。Rangeはセルやセル範囲そのものを表す“超・基本”のオブジェクト。ここを掴むと、入力・計算・整形・検索まで一気に楽になります。


Rangeとは何かと、参照の基本

Rangeは、ワークシート上の特定のセルや範囲を指すオブジェクトです。たとえば「A1セル」「A1:B3の範囲」を直接扱えるので、値の取得・書き込み、色やフォントの変更、数式の設定などが簡単にできます。

' 基本:単一セル
Range("A1").Value = "こんにちは"

' 複数セル:範囲
Range("A1:B3").Value = 100    ' 範囲全体に同じ値を設定

' Cellsと組み合わせて相対参照
Cells(1, 1).Value = "A1"       ' 行・列で指定(1,1 は A1)
Range(Cells(1,1), Cells(3,2)).Value = 0  ' A1:B3を0で埋める
VB

Rangeの指定方法には「アドレス文字列(”A1″や”B2:C4″)」「Cellsとの組み合わせ」「名前付き範囲の指定」などがあり、操作の幅が広がります。


よく使うコアプロパティ(値・数式・位置・表示)

値と数式の扱い

  • Value: セルの“中身”そのもの(値や文字列)を取得・設定します。最もよく使う基本プロパティです。
Range("A1").Value = 123
Debug.Print Range("A1").Value   ' 123
VB
  • Value2: Valueに似ていますが、通貨や日付の一部の取り扱い差を気にしない“素の値”向け。実務ではValue2を好む人もいます(違いを強く意識しないならValueで十分)。
  • Formula: セルに“数式文字列”を設定します。数式は必ず「=」から始めます。
Range("B1").Formula = "=SUM(A1:A10)"
VB
  • Text: セルの表示文字列(見えている形式)を取得します。表示形式の影響を受けるので“見た目の文字列”が欲しいときに使います。
Range("A1").NumberFormat = "#,##0円"
Range("A1").Value = 1234
Debug.Print Range("A1").Text    ' "1,234円"
VB

セルの位置情報

  • Address: Rangeの参照文字列($A$1など)を返します。絶対参照・相対参照を切り替え可能。
Debug.Print Range("B2:C4").Address      ' $B$2:$C$4
VB
  • Row / Column: 先頭セルの行番号・列番号を返します。
Debug.Print Range("C5").Row    ' 5
Debug.Print Range("C5").Column ' 3
VB

見た目を変えるプロパティ(フォント・塗りつぶし・枠線)

フォント(Font)

  • Font.Name / Size / Bold / Color: 文字の種類・サイズ・太字・色を設定します。
With Range("A1").Font
    .Name = "メイリオ"
    .Size = 12
    .Bold = True
    .Color = RGB(0, 64, 128)   ' 濃い青
End With
VB

塗りつぶし(Interior)

  • Interior.Color: セルの背景色を設定します。
Range("A1:A10").Interior.Color = RGB(255, 245, 200) ' 薄いオレンジ
VB

枠線(Borders)

  • Borders: 境界線スタイル・色・太さを設定します。
With Range("B2:D4").Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
    .Color = RGB(200, 200, 200)
End With
VB

表示形式(NumberFormat)

  • NumberFormat: 表示形式を文字列で指定します(例:”#,##0.00″、”yyyy/mm/dd”)。
Range("C2").NumberFormat = "yyyy/mm/dd"
Range("C2").Value = Date
VB

範囲操作のキモ(Offset・Resize・CurrentRegion・SpecialCells)

相対移動(Offset)

  • Offset(rowOffset, colOffset): あるセルから相対的に移動して別のRangeを取得します。
' A1から1行下・2列右=C2へ
Range("A1").Offset(1, 2).Value = "C2"
VB

サイズ変更(Resize)

  • Resize(rows, cols): 起点はそのまま、行数・列数を変更した新しい範囲を作ります。
' A1を起点に 3行×2列の範囲(A1:B3)
Range("A1").Resize(3, 2).Value = 0
VB

データの島を一括取得(CurrentRegion)

  • CurrentRegion: 空白行・空白列で囲まれた“連続データの塊”を返します。テーブル全体を一発取得に便利。
Range("A1").CurrentRegion.Select  ' 連続領域を選択
VB

条件で抽出(SpecialCells)

  • SpecialCells: 定数、数式、可視セル、空白など条件でセルを抽出できます。
' 数式セルだけ色付け
On Error Resume Next
Range("A1:D20").SpecialCells(xlCellTypeFormulas).Interior.Color = RGB(230, 255, 230)
On Error GoTo 0
VB

初心者がハマりやすいポイントとコツ

  • ValueとTextの違い: Valueは“中身の値”、Textは“表示文字列”。見た目どおりの文字が欲しいならText、計算や比較ならValueが安全です。
  • 数式は「=」から: Formulaに設定する文字列は必ず「=」で開始します。値を書きたいときはValue/Value2を使いましょう。
  • OffsetとResizeの軸に注意: Offsetは“起点をずらす”、Resizeは“起点は固定でサイズ変更”。混同すると意図しない範囲を操作しがちです。
  • Selectを多用しない: 可能な限りRangeに直接アクセスして処理すると速くて壊れにくいです(選択は必要な場面だけ)。

すぐ試せる練習問題と模範コード

練習1:連番入力と交互に色付け

  • 目的: A1:A20に1〜20の連番を入れて、偶数行を薄灰で塗る。
Sub Practice1()
    Dim i As Long
    For i = 1 To 20
        Range("A1").Offset(i - 1, 0).Value = i
        If i Mod 2 = 0 Then
            Range("A1").Offset(i - 1, 0).Interior.Color = RGB(240, 240, 240)
        End If
    Next i
End Sub
VB

練習2:テーブル合計行の自動追加

  • 目的: CurrentRegionの最終行の下に合計を出す(B列を合計)。
Sub Practice2()
    Dim tbl As Range, lastRow As Long
    Set tbl = Range("A1").CurrentRegion
    lastRow = tbl.Rows(tbl.Rows.Count).Row
    Range("A" & lastRow + 1).Value = "合計"
    Range("B" & lastRow + 1).Formula = "=SUM(" & tbl.Columns(2).Address & ")"
    Range("A" & lastRow + 1).Resize(1, tbl.Columns.Count).Font.Bold = True
End Sub
VB

練習3:数式セルだけ背景色を外す

  • 目的: 指定範囲で、数式セルの塗りつぶしをクリア。
Sub Practice3()
    On Error Resume Next
    Range("A1:D50").SpecialCells(xlCellTypeFormulas).Interior.ColorIndex = xlNone
    On Error GoTo 0
End Sub
VB

さらに深く知るためのキーワード

  • Address/AddressLocal: 参照文字列の取得(ローカル言語版もあり)。
  • Borders/Characters/Columns/ColumnWidth/Comment: 罫線、文字部分選択、列幅、コメント操作などの関連プロパティ群。
  • プロパティとは何か: “オブジェクトの属性”。オブジェクト名.プロパティ名で参照・設定します。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました