【Excel/VBA】セルの基本操作【マクロ】

ExcelのVBA(マクロ)で行えるセルの基本操作についてまとめました。

【Range】セル範囲選択

VBA(マクロ)では、Rangeオブジェクトで操作したい対象のセルを指定できます。
記述方法は次のように色々あります。

Range("A1") 'A1
Range("A1:E5") 'A1~E5
Range("A1,E5") 'A1とE5
Range("A1","E5") 'A1~E5
Range("1:5") '1~5行
Range("A:E") '1~5列
Range(Cells(1, 1)) 'A1セル
Range(Cells(1, 1), Cells(3,2)) 'A1~B3
Range(Rows(1), Rows(5)) '1~5行
Range(Rows(1), Columns(1)) '全範囲
Range(Columns(1), Columns(3)) '1~3列
Range("A1", Cells(3,2)) 'A1~B3
Range("名前定義") '「名前定義」したセル全て
関連記事
1 【VBA/マクロ】Rangeオブジェクトでセル指定(複数・行・列・全範囲)

【Select,Active,Clear】選択、アクティブ、クリア(消去)

VBA(マクロ)でセルの「選択」「アクティブ」「クリア(消去)」をするには次のメソッドを利用します。

メソッド 説明
オブジェクト.Select セルを選択状態にする
オブジェクト.Active セルをアクティブ状態にする
オブジェクト.Clear セルをクリア状態にする

※「Rangeオブジェクト」、「Cellオブジェクト」などで対象セルを指定します。

Sub test()

    Range("A1").Select
    Range("A2").Active
    Range("A3").Clear

End Sub
関連記事
1 【VBA/マクロ】セルの選択・アクティブ・クリア(消去)

【Copy】コピー・切り取り・貼り付け

VBA(マクロ)でセルの「コピー」「切り取り」「貼り付け」をするには次のメソッドを利用します。

書式

Range("A1").Copy
Range("A2").PasteSpecial (xlPasteAll)

「Copy」メソッドで指定したセルの内容をコピーできます。
もしコピーでなく切り取りも場合は「Cut」メソッドを使います。
また、「PasteSpecial」メソッドでコピーした内容を貼り付けます。
また、引数に入れる定数によって、コピーする内容を細かく設定できます。

定数 説明(貼り付ける対象)
xlPasteAll すべて(デフォルト)
xlPasteFormulas 数式のみ
xlPasteValues 値のみ
xlPasteFormats 書式のみ
xlPasteComments コメントのみ
xlPasteValidation 入力規則
xlPasteAllExceptBorders 罫線を除くすべて
xlPasteColumnWidths 列幅
xlPasteFormulasAndNumberFormats 数式と数値の書式
xlPasteValuesAndNumberFormats 値と数値の書式
xlPasteAllUsingSourceTheme コピー元のテーマを使用してすべて貼り付け
xlPasteAllMergingConditionalFormats すべての結合されている条件付き書式
Sub test()

    ' A1セルの内容をコピー
    Range("A1").Copy

    ' A2セルに貼り付け
    Range("A2").PasteSpecial (xlPasteAll)

    ' コピーモードを解除
    Application.CutCopyMode = False

End Sub

補足

CopyやCutで次のようにDistinationを使用すると、Pasteメソッドを省略して貼り付けもできます。

' A1セルをコピーしてA2セルに貼り付け
Range("A1").Copy Distination:=Range("A1")
関連記事
1 【VBA/マクロ】セルのコピー・切り取り・貼り付け

【Value】セルに値をセット(挿入)

VBA(マクロ)でセルに値をセット(挿入)するにはValueメソッドを利用します。

書式

Range("A1").Copy
オブジェクト.Value = 値
オブジェクト.Value = "文字列"

※操作対象は「Rangeオブジェクト」「Cellオブジェクト」などを利用します。

Sub test()

    ' A1セルに値をセット
     Range("A1").Value = 0

    ' A2セルに値をセット
    Range("A2").Value = "零"

End Sub
関連記事
1 【VBA/マクロ】セルに値をセット(挿入)

【Value,Text】セルに入力されたデータを取得

VBA(マクロ)でデータ(値・文字列)を取得するにはValue,Textメソッドを利用します。

記述例 説明
x = Range(“A1”).Value 値を取得する場合
y = Range(“A2”).Text 文字列を取得する場合

※操作対象の設定は「Rangeオブジェクト」「Cellオブジェクト」などを利用して行います。

Sub test()

    ' A1セルの値を取得して変数xに格納
     x = Range("A1").Value

    ' A2セルの文字列を取得して変数yに格納
     y = Range("A2").Value

    MsgBox x

    MsgBox y

End Sub

メッセージボックスに「A1セルの値」「A2セルの文字列」が表示されます。

関連記事
1 【VBA/マクロ】セルのデータ(値・文字列)を取得

【Count】行数・列数・セル数を取得

VBA(マクロ)で行数・列数・セル数を取得するにはCountメソッドを利用します。

記述例 説明
Range(“A1:E5”).Cells.Count A1~E5のセル数を取得
Range(“A1:E5”).Rows.Count A1~E5の行数を取得
Range(“A1:E5”).Columns.Count A1~E5の列数を取得

※操作対象の設定は「Rangeオブジェクト」「Cellオブジェクト」などを利用して行います。

Sub test()

    ' A1~E5のセル数を取得・表示
    x = Range("A1:E5").Cells.Count
    MsgBox x  ' 25

    ' A1~E5の行数を取得
    y = Range("A1:E5").Rows.Count
    MsgBox y  ' 5

    ' A1~E5の列数を取得
    Z = Range("A1:E5").Columns.Count
    MsgBox Z  ' 5

End Sub

メッセージボックスにセル数「25」、行数「5」、列数「5」が表示されます。

関連記事
1 【VBA/マクロ】行数・列数・セル数を取得

【Row・Column】行・列番号の取得

VBA(マクロ)で行番号・列番号を取得するにはRow・Columnメソッドを利用します。

記述例 説明
Range(“A2”).Row A2セルの行番号を取得
Range(“A2”).Column A2セルの列番号を取得

※操作対象の設定は「Rangeオブジェクト」「Cellオブジェクト」などを利用して行います。

Sub test()

    ' A2セルの行番号を取得
    x = Range("A2").Row
    MsgBox x  ' 2

    ' A2セルの列番号を取得
    y = Range("A2").Column
    MsgBox y  ' 1


End Sub
関連記事
1 【VBA/マクロ】行番号・列番号を取得

【Name】セル名の設定

VBA(マクロ)でセルに名前を設定するにはNameメソッドを利用します。

記述例 説明
Range(“A2”).Name = 任意の名前 A2セルにセル名を設定

※操作対象の設定は「Rangeオブジェクト」「Cellオブジェクト」などを利用して行います。

Sub test()

    ' A2セルに名前を設定
    Range("A2").Name = "A2セルです"

    ' セル操作(値をセット)
    Range("A2セルです").Value = 10


End Sub

A2セルにセル名「A2セルです」を設定します。
これにより、「A2セルです」でセル操作ができます。

関連記事
1 【VBA/マクロ】セルに名前を設定

【Font】フォントの大きさ・種類・スタイル

VBA(マクロ)でフォントの「大きさ」「種類」を変えるには、「Font」プロパティを使用します。

書式

Range("A1").Font.Name = "MS Pゴシック"
プロパティ 説明
Font.Name フォントの種類(MS Pゴシックなど)
Font.Size フォントサイズ(16など)
Font.Bold 太字(Trueなら有り、Falseなら無し)
Font.Color 色(RGB(255, 0, 0)、RGB(0, 255, 0)、vbRed、vbblueなど)
Font.FontStyle 標準、太字、斜体、太字、斜体など
Font.OutlineFont フォントのアウトライン化(Trueなら有り、Falseなら無し)
Font.Italic 斜体(Trueなら有り、Falseなら無し)
Font.Underline 下線(Trueなら有り、Falseなら無し) 下線
Font.Strikethrough 取消線(Trueなら有り、Falseなら無し)
Font.Superpre 上付き文字(Trueなら有り、Falseなら無し)
Font.Subpre 下付き文字(Trueなら有り、Falseなら無し)

■参考:Rangeによるセル指定方法

Sub test()
    ' A1セルに値をセット
    Range("A1").Value = "イシュタル"

    ' A1セルの字体
    Range("A1").Font.Name = "MS Pゴシック"

    ' A1セルのフォントの種類
    Range("A1").Font.Size = 20

End Sub

関連ページ

【VBA入門】基礎から作業自動化の応用例まで解説
VBA(マクロ)で様々な処理を自動化する方法をサンプルコード付きで入門者向けにまとめました。

コメント