VBA

最終更新日: 2024.01.30 (公開: 2024.01.30)

Excel VBAのCellsでセルを指定するには?Rangeとの使い分けについても解説

Excel VBAのCellsでセルを指定するには?Rangeとの使い分けについても解説

「VBA」のCellsとは、セルを個別で選択するプロパティです。「VBA」を扱う場合、同じ作業でもCellsを使っているかどうかで大幅に手間や作業効率が変わってきますが、Cellsを十分に理解していない方もいるのではないでしょうか。

本記事では、「VBA」のCellsの役割やCellsの使い方、Rangeとの使い分けなどについて解説します。

VBAのCellsとは?

「VBA」のCellsとは、Excelのセルを個別に選択していくプロパティで、セルの場所を行と列方向に対し数値で指定します。また、Cellsは主に単体のセルを指定して操作したり、シート・行・列全体のな指定をしたりが可能です。

一方でRangeは、複数の範囲を指定したり範囲を範囲につけた名前で呼び出せたりといった特徴があり、Cellsと似たプロパティですが使い方や特徴が異なります。そのため、CellsとRangeの理解を深めて、使い分けをすることが大切です。

CellsとRangeの使い分け方は?

Cellsは、上記でも解説したように単体のセル・シート・行・列全体を指定して操作するプロパティです。さらに、変数に値を格納して位置の指定もできます。

そのため、アルゴリズムによって指定範囲が動的に変化し、変数の使用が必要な場合はCellsを使い、範囲が固定されている場合はRangeを使うという使い分けに適しています。

VBAのCellsの代表的な6つの使い方

「VBA」のCellsは、その特長を利用した使い方があるので、しっかり理解しておくことで操作性が向上します。

Cellsの代表的な使い方は、主に6つです。

  • Cellsでセルを選択する
  • Selectでセルを選択する
  • シート全体を指定する
  • 選んだセルに値を入力する
  • 特定のセルを基準にOffsetで相対的にセルを指定する
  • 文字のフォントや大きさを変更する

Cellsをこれから使おうと思っている方やCellsの操作にあまり慣れていない方は、ここで解説する使い方の理解をおすすめします。

Cellsでセルを選択する

Cellsでセルを選択する場合、主に以下のようなコードを記述します。

Sub sample1_cells()
    Cells(5, 2).Select
End Sub

上記コードでは、Excelシートの5行目と2列目(B)のセルが指定されます。1番左上のセル(1行目と1列目A)を基準として、下に5つ右に2つすすんだ先を指定するという指示が出されたことになります。

もしCells(2,5)というように反対に指定すると、2行目の5列目(E)のセルが選択されてしまうので、指定順が反対になっていないか確認しましょう。

また、Cellsは以下のコードのように、列を文字に変えた指定もできます。

Sub sample1_cells()
    Cells(5, "B").Select
End Sub

そのため、Cellsでセルを選択する場合、いずれかの指定方法でコードを記述しても問題ありません。

Selectでセルを選択する

Selectでセルを選択する場合、主に以下のようなコードを記述します。

Sub Cells_Sample1()
    Cells(2, 3).Select
End Sub

記述方法と指示の仕組みなどは、前項で解説した「Cellsでセルを選択する方法」と同じため、Cellsでセルを選択する方法を理解している方であれば問題なく使用が可能です。これからCellsを使う方は、Cellsでのセル選択とSelectでのセル選択の両方覚えておくことをおすすめします。

シート全体を指定する

シート全体を指定する場合、主に以下のような記述をします。

Sub sample2_cells()
     Cells.Select
End Sub

Cellsは、列や行を指定しなければ、シート全てのセルを選択することになります。そのため、Cellsでシート全体を選択したい場合は、上記コードのように行と列の番号を記述せずに実行するようにしましょう。この操作はシートのある文字を全て同じフォントで統一したいときや、別のシートに記されえた値と行列計算をしたいときに使えます。

手動で操作するよりも効率的で、非常に便利です。

選んだセルに値を入力する

選択したセルに値を入力する場合、主に以下のようなコードを記述します。

Sub sample3_cells()
    Cells(1, 1).Value = "Hello"
    Cells(2, 1).Value = 5
End Sub

選んだセルに値を入力する場合は、上記のようにCellsでセルを指定しvalueでセルに入力する値を指定します。1行1列目のA1にはHelloの文字列が、2行1列目のA2には数値の5が挿入されます。

また、ワークシートが複数ある場合は、以下のような簡略形で記述し、シートの指定が可能です。

Worksheets("Sheet1").Cells(1, 1).Value = "Hello"
Worksheets("Sheet2").Cells(2, 1).Value = 5

このコードも覚えておくことで、コードの可読性を向上できるため、覚えておくことをおすすめします。

特定のセルを基準にOffsetで相対的にセルを指定する

Offsetで指定のセルから相対指定でセルを指定する場合、以下のようなコードを記述します。

Sub Cells_Sample4()
    Cells(2, 2).Offset(1, 2).Select
End Sub

上記コードでは、3行4列目(D)のセルが選択されます。Offsetの仕組みとして、Cellsで選択された2行目2列目のB2セルを基準に、下に1行、横に2列すすんだ先のセルが選択されることになります。さらに、Offsetは負の値を指定することで左と上への移動もできるようになるので、指定したセルの箇所よって指定する値を変更しましょう。

最初は、複雑な使い方だと感じますが、セル同士の複雑な計算をする場合に役立ちますので何度も使って覚えていくようにしてください。

文字のフォントや大きさを変更する

文字のフォントや大きさを変更する場合、以下のようなコードを記述します。

ub sample4_cells()
   Cells(3, 2).Value = "指定する文字"
   Cells(3, 2).Font.Bold = True
   Cells(3, 2).Font.Name = "フォントの名前"
   Cells(3, 2).Font.Size = 12
End Sub

上記コードは、指定したセル内の文字フォントや大きさを自由に変更が可能です。

Cells(3, 2).Valueの指定する文字と記載されている部分には、入力したい名前や文字を記述します。Cells(3, 2).Font.Nameのフォントの名前には、指定したいフォント名を記載すれば、そのフォントに文字が変更されます。また、Font.Boldとは太字という意味です。

セルで入力した文字のフォントや大きさを変更させたい場合は、上記コードの使用をおすすめします。

VBAのCellと変数を組み合わせ、セルを指定する方法

「VBA」のCellsは、変数で範囲を指定することもできるプロパティです。Cellsの変数でセルを指定する場合のコードは以下の通りです。

Sub Cells_Sample5()

    Dim i As Integer '行カウンタ
    Dim j As Integer '列カウンタ
    
    For i = 1 To 5
        For j = 1 To 5
            Cells(i, j).Value = "(" & i & "," & j & ")"
        Next j
    Next i

End Sub

上記コードでは、行カウンタをi、列カウンタをjとして組んであります。文字を入れる場合は、 Cells(i, j).Value = "(" & i & "," & j & ")"というように記述しましょう。実行すると、1行1列目(A)から5行5列目(E)までのセルに値が入力されます。

変数でセルを指定する場合は、上記の方法を覚えておくようにしてください。

VBAでRangeとCellsをそれぞれ変換する方法

CellsとRangeをそれぞれ変換する方法は、主に以下の通りです。RangeからCellsに変換する場合、「VBA」関数のRowとColnmnの2つを使って変換します。

Sub TEST1()
  
  'RangeをCellsに変換して選択
  Cells(Range("B2").Row, Range("B2").Column).Select
  
End Sub

「VBA」関数を使って上記のコードを実行することで、Rangeで2行2列目(B)のセル範囲が指定されます。

Sub TEST2()
  
  'Rangeで選択
  Range("B2").Select
  
End Sub

上記は、RangeからCellsに変換するコードです。CellsからRangeに変換する場合は、「VBA」関数のAddressを使用して、セル範囲のアドレス取得をします。そして、Addressを使って以下のコードを記述します。

Sub TEST4()
  
  'CellsをRangeに変換して選択
  Range(Cells(2, 2).Address).Select
  
End Sub

上記のコードは、Cells(2, 2)をRangeに変更するための例文です。この方法によって、CellsからRangeへ変更できます。

VBAのRangeとCellsを併用してセルを指定する方法

RangeとCEllsを併用してセルを指定する方法があります。それぞれの特徴を活かした使い方のため、一方を使ってのセル指定とは少し違った操作です。

RangeとCellsを併用してセルを指定したら、決まった範囲を決めておき、その範囲からCellsで指定するといった方法もできます。そのため、それぞれ目視で行と列を眺めて目的のセルはどこかを探す必要がなくなります。

Rangeはセルの範囲を選択する際に使う

Rangeは、セルの範囲を選択する際に使うプロパティで、複数の範囲を指定し範囲を命名して呼び出せるなどの特徴があります。また、単一のセルや変数を使わない固定のセル、名前が決まっているセルを選択する際にもCellsではなくRangeを使います。

そのため、「VBA」でセルを取り扱う場合、Cellsでは適さない場合もあるため、セルに合わせてRangeも併用して使うことが効果的です。

Rangeで単一セルを選択する

Rangeは、単一のセルを選択できます。単一のセルを選択する場合は、Range("セル")という構文を使って以下のコードを記述します。

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

Sub sample1_2_range()
    Range("C5").Value = 100
End Sub

上記のコードでC5セルを選択し、下記のコードでC5セルに数値の100を挿入しています。

Rangeで複数のセルを選択する

Rangeは、複数のセルを選択することもできます。複数のセルの集合は、セル範囲といいCellsでは選択できないので、Range("始点セル:終点セル")という構文を使って以下のコードを記述します。

Sub sample2_range()
    Range("A1:E10").Select
End Sub

上記コードを記述することで、1行1列(A)目から10行5列(E)目までのセル範囲を選択できます。

CellsとRangeを組み合わせる

CellsとRangeを組み合わせて、セル範囲の指定も可能です。以下のコードを記述します。

Sub sample3_range()
    Range(Cells(1,1), Cells(10, 5)).Value = 10
End Sub

上記コードを実行すると、1行1列(A)目のセルから10行5列(E)目のセルまでの範囲全てに、10が入力された状態に表示されます。

CellsとRangeを組み合わせて使うことで柔軟な操作が可能となるので、覚えておくことをおすすめします。

VBAでCellsをRangeの引数として扱う

Rangeの引数にCellsを使えます。Rangeの引数にCellsを指定することによって、セルの範囲が指定できるようになります。

Range(Cells1, Cells2).Selectという構文を使って、以下のコードを記述しましょう。

Sub Cells_Sample7()
    Range(Cells(2, 2), Cells(4, 4)).Select
End Sub

上記コードが実行されることで、Cells1からCells2までの範囲を指定します。このコード例では、2行2列(B)目から4行4列(D)目までのセル範囲が選択されたことになります。

指定したいセルの範囲を指示したい場合は、Rangeの引数にCellsを使ってコードを記述してください。

VBAでRangeオブジェクトを戻り値として扱う

Cellsプロパティは、Rsngeオブジェクトを返します。返されたRangeオブジェクトは、メソッドやプロパティを呼び出せValueやCopyなどに使えます。

「VBA」でRangeオブジェクトを戻り値として使うには、主に以下の2つです。

  • Valueプロパティを使用してRangeオブジェクトの値を操作する
  • RangeオブジェクトからCopyメソッドを呼び出す

Rangeオブジェクトとは、変数宣言に出てくるRangeのことで、これまで解説したコードを処理する際に出てくるRangeとは異なる点に注意してください。

ここからは、上記2つの方法について解説します。

Valueプロパティを使用してRangeオブジェクトの値を操作する

セルの値を取得・変更できるプロパティがValueです。主に以下のようなコードを記述します。

Sub Cells_Sample8()
    ' セルの値の変更
    Cells(1, 1).Value = "値"
    
    ' セルの値の取得
    MsgBox Cells(1, 1).Value
End Sub

上記コードを実行することで、1行1列(A)目に入力されている値を取得・変更が可能です。たとえば愛知県という値を取得・変更したい場合は、上記の"値"の部分に愛知県と記述して実行します。

そのため、ValueはRangeを使う上で非常に大切なコードでもあります。

RangeオブジェクトからCopyメソッドを呼び出す

セルをコピーするのに使用するのがメソッドのCopyで、以下のようなコードを記述します。

Sub Cells_Sample9()
    Cells(1, 1).Copy Cells(3, 3)
End Sub

以上のコードを実行すると、1行1列(A)目のセルをコピーして、3行3列(C)目のセルにペーストが可能です。同じ値を何度も記述する場合では手間がかかってしまいますが、上記コードを活用することで簡単に同じ値のコピーができます。

そのため、作業効率の向上になるので、非常に利便性の高い方法といえます。

VBAのCellsの使い方をマスターしよう

「VBA」を扱う場合、Cellsの使い方をマスターしていれば効果的に作業をすすめられ、大幅な作業時間の削減ができます。さらに、Rangeと組み合わせることで使い方の拡張ができるので、これから「VBA」を扱う方や作業効率を上げたい方におすすめです。

また、習慣的にCellsを使っていけば使いこなせるようになるので、ぜひ本記事を参考にCellsを使ってみてください。

アクセスランキング 人気のある記事をピックアップ!

    コードカキタイがオススメする記事!

    1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      2024.01.26

      子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

      #プログラミングスクール

    2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      2022.01.06

      【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

      #プログラミングスクール

    3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

      2024.01.26

      【未経験でも転職可】30代におすすめプログラミングスクール8選!

      #プログラミングスクール

    4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      2024.01.26

      初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

      #JAVA

    5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      2024.01.26

      忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

      #プログラミングスクール

    1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      2022.01.06

      【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

      #プログラミングスクール

    2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      2024.01.26

      【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

      #プログラミングスクール

    3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      2024.01.26

      【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

      #プログラミングスクール

    5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      2024.01.26

      【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

      #プログラミングスクール