「VBA」のCellsとは、セルを個別で選択するプロパティです。「VBA」を扱う場合、同じ作業でもCellsを使っているかどうかで大幅に手間や作業効率が変わってきますが、Cellsを十分に理解していない方もいるのではないでしょうか。
本記事では、「VBA」のCellsの役割やCellsの使い方、Rangeとの使い分けなどについて解説します。
目次
「VBA」のCellsとは、Excelのセルを個別に選択していくプロパティで、セルの場所を行と列方向に対し数値で指定します。また、Cellsは主に単体のセルを指定して操作したり、シート・行・列全体のな指定をしたりが可能です。
一方でRangeは、複数の範囲を指定したり範囲を範囲につけた名前で呼び出せたりといった特徴があり、Cellsと似たプロパティですが使い方や特徴が異なります。そのため、CellsとRangeの理解を深めて、使い分けをすることが大切です。
Cellsは、上記でも解説したように単体のセル・シート・行・列全体を指定して操作するプロパティです。さらに、変数に値を格納して位置の指定もできます。
そのため、アルゴリズムによって指定範囲が動的に変化し、変数の使用が必要な場合はCellsを使い、範囲が固定されている場合はRangeを使うという使い分けに適しています。
「VBA」のCellsは、その特長を利用した使い方があるので、しっかり理解しておくことで操作性が向上します。
Cellsの代表的な使い方は、主に6つです。
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でセルを選択する場合、主に以下のようなコードを記述します。
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で指定のセルから相対指定でセルを指定する場合、以下のようなコードを記述します。
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」の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)までのセルに値が入力されます。
変数でセルを指定する場合は、上記の方法を覚えておくようにしてください。
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へ変更できます。
RangeとCEllsを併用してセルを指定する方法があります。それぞれの特徴を活かした使い方のため、一方を使ってのセル指定とは少し違った操作です。
RangeとCellsを併用してセルを指定したら、決まった範囲を決めておき、その範囲からCellsで指定するといった方法もできます。そのため、それぞれ目視で行と列を眺めて目的のセルはどこかを探す必要がなくなります。
Rangeは、セルの範囲を選択する際に使うプロパティで、複数の範囲を指定し範囲を命名して呼び出せるなどの特徴があります。また、単一のセルや変数を使わない固定のセル、名前が決まっているセルを選択する際にもCellsではなくRangeを使います。
そのため、「VBA」でセルを取り扱う場合、Cellsでは適さない場合もあるため、セルに合わせて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は、複数のセルを選択することもできます。複数のセルの集合は、セル範囲といいCellsでは選択できないので、Range("始点セル:終点セル")という構文を使って以下のコードを記述します。
Sub sample2_range() Range("A1:E10").Select End Sub
上記コードを記述することで、1行1列(A)目から10行5列(E)目までのセル範囲を選択できます。
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を組み合わせて使うことで柔軟な操作が可能となるので、覚えておくことをおすすめします。
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を使ってコードを記述してください。
Cellsプロパティは、Rsngeオブジェクトを返します。返されたRangeオブジェクトは、メソッドやプロパティを呼び出せValueやCopyなどに使えます。
「VBA」でRangeオブジェクトを戻り値として使うには、主に以下の2つです。
Rangeオブジェクトとは、変数宣言に出てくるRangeのことで、これまで解説したコードを処理する際に出てくるRangeとは異なる点に注意してください。
ここからは、上記2つの方法について解説します。
セルの値を取得・変更できるプロパティがValueです。主に以下のようなコードを記述します。
Sub Cells_Sample8() ' セルの値の変更 Cells(1, 1).Value = "値" ' セルの値の取得 MsgBox Cells(1, 1).Value End Sub
上記コードを実行することで、1行1列(A)目に入力されている値を取得・変更が可能です。たとえば愛知県という値を取得・変更したい場合は、上記の"値"の部分に愛知県と記述して実行します。
そのため、ValueはRangeを使う上で非常に大切なコードでもあります。
セルをコピーするのに使用するのがメソッドのCopyで、以下のようなコードを記述します。
Sub Cells_Sample9() Cells(1, 1).Copy Cells(3, 3) End Sub
以上のコードを実行すると、1行1列(A)目のセルをコピーして、3行3列(C)目のセルにペーストが可能です。同じ値を何度も記述する場合では手間がかかってしまいますが、上記コードを活用することで簡単に同じ値のコピーができます。
そのため、作業効率の向上になるので、非常に利便性の高い方法といえます。
「VBA」を扱う場合、Cellsの使い方をマスターしていれば効果的に作業をすすめられ、大幅な作業時間の削減ができます。さらに、Rangeと組み合わせることで使い方の拡張ができるので、これから「VBA」を扱う方や作業効率を上げたい方におすすめです。
また、習慣的にCellsを使っていけば使いこなせるようになるので、ぜひ本記事を参考にCellsを使ってみてください。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール