石田修二研究室 > VBA >

セルの操作(1)

6-1 セルの指定

VBAでは、セルを「Rangeオブジェクト」と表現する(Cellオブジェクトではない!)。

セルを指定するには2通りの方法がある。

1.1. Rangeプロパティ

セル番地でセルを指定する

セルは、Rangeプロパティを使って選択するのが一般的である。

【ケース1】1つのセルを選択する

Sub RageSel1()
Range("C5").Select
End Sub

【ケース2】連続するセル範囲を選択する。

Sub RageSel2()
 Range("B2:D4").Select
End Sub

Rangeは、セルのアドレスを文字列として扱うので、セルを指定する際は「"(ダブルコーテーション)」で囲まなければならない。

(注)Range("B2:D4").Select は、Range("B2", "D4").Select と記述することもできる。

【ケース3】非連続のセル範囲を選択する

その1

Sub RageSel3()
    Range("B2,B4,D2,D4").Select
End Sub

その2

Sub RageSel3()
    Range("B2:D3,B5:D6").Select
End Sub

1.2. Cellsプロパティ

1つのセルを選択する

セルは、Cellsプロパティを使っても選択することができる。

(例)Cellsプロパティで1つのセルを選択する

Sub CellsSel()
    Cells(5, 3).Select
End Sub

(例)連続番号でセルを選択する

Sub CellsSel()
    Cells(1027).Select
End Sub

全セルを選択する

(例)全セルを選択する

Sub CellsSel()
    Cells.Select
End Sub

Cellsプロパティの限界

Cellsプロパティは、rangeプロパティのように自由に複数のセル範囲を参照できない。そこで、Cellsプロパティでセル範囲を参照するときには、次のようにRangeプロパティと組み合わせて使う。

(例)セル範囲を選択する

Sub CellsSel()
    Range(Cells(1, 2), Cells(5, 4)).Select
End Sub

RangeプロパティとCellsプロパティの使い分け

教科書79ページの補足。Cellsのメリットは、引数に数値変数を使用できること。

(例)セル【A1】から右下方向に1から100までの連続番号を入力するプロシージャ

Sub Input1To100()
    Dim i As Integer
    For i = 1 To 100
        Cells(i, i) = i
    Next i
End Sub

ここでは、Cellsプロパティと数値変数を組み合わせることで、非常に柔軟かつ高度なプロシージャが作成できるということを押さえておく。

1.3. その他の指定方法

ActiveCell

(使い方の例)セルの数式と値をクリアする。いわゆる[Delete]キーを押した時と同じこと。

Sub ClearRange1()
 Range("a1").Select
 ActiveCell.Value = ""
End Sub

Selection

セルに限らず、現在選択されているもの(オブジェクト)を表す。

(例)選択セル範囲の位置を行列ともに変更する

Sub OffRange1()
 Selection.Offset(-1,2).Select
End Sub

CurrentRegion

アクティブセル領域を表す

(例)アクティブセル領域を選択する

Sub SelActRange()
    Range("C4").CurrentRegion.Select
End Sub

(例)先ほどの応用でデータベース範囲を選択する

Sub SelDatabase()
    Range("A1").CurrentRegion.Select
End Sub

UsedRange

行や列の指定

Rangeプロパティを使えば、行や列全体を参照できる。しかし、RowsプロパティとColumnsプロパティを使っても行列を参照することがで きる。

(例)選択されているセル範囲の行数を取得する

Sub CountRows()
    Range("B5:D7").Select
    MsgBox Selection.Rows.Count
End Sub

ワークシートの指示を省略した場合

例:アクティブワークシート「Sheet1」で、ワークシート(Sheet2」のシートモジュールに記述したとき

Sub sample()
    Range("A1").Value = 100
End Sub

ワークシート「Sheet2」のセル【A1】に数値(100)が代入される。詳しくは後述。

6-2 覚えておきたいプロパティ1

Valueプロパティ

Sub sample2()
ActiveCell.Value = 100
Range("B3").Value = "VBA"
End Sub

セルの値をダイアログボックスに表示する

Sub sample2()
    MsgBox Range("A1").Value
End Sub

(注)MsgBoxは、代入された値をダイアログボックスに表示する関数(教科書86ページ参照)

VBAではプロパティを省略する書き方ができる。

Textプロパティ

Textプロパティは、セルに表示されている値を返す。Textプロパティは読み取り専用であり、値を代入することはできない。

Textプロパティはセルに表示されているイメージをそのままコピーするプロパティであり、使うことはあまり推奨しない。

Formulaプロパティ

セルに入力されている数式を表す。Valueプロパティがセルの「値」を扱うのに対して、ここはあくまで「数式」である。違いを理解すること。

絶対参照でも相対参照でも構わない。

セルにIFワークシート関数を入力する場合

(工事中)


リンクはご自由にどうぞ。

【石田修二研究室】 【VBAトップページ】