まえがき

このアイキャッチイメージは怒られそう。。。
Excelの1マスをセルと呼びます。(某アニメキャラではありません)。
本記事は以下の3つの内容を記載しています。
①セルや範囲の指定方法
特定のセルに操作を行うためにはセルを指定する必要があり、特定の範囲をコピーするためには範囲を指定する必要があります。
データ処理で使う機会は多いので、セルの指定方法は初期段階で理解する必要があります。
セルの指定方法には、縦方向と横方向の数字を入れる方法と、セル名(A1など)で指定する方法がありますが、プログラムでセルの操作を行うためには数値で入れる方がやりやすいので、本記事では数値で入れる方法のみ紹介します。
②最終行と最終列の指定方法
最終行と最終列についてもセルの指定と組み合わせて使う事でより柔軟なマクロを作成できますので、一緒に覚えておきたい内容となります。
③罫線の引き方
最後に罫線の引き方を紹介しています。複数セルを指定して実施する事として、よく利用する罫線の引き方を紹介しています。
セルの指定方法
セルを指定する時は、上から何番目か、左から何番目かを確認します。
例えばの上から3行目、左から5列目のセルを選択(.Select)する場合は
Cells(3,5).Select
と表します。セルを選ぶのではなく、文字列を入れる場合は
Cells(3,5) = “文字列“
文字列の場合は“で挟んで、数字や変数の場合はそのまま記載してください。
複数のシートを扱うマクロの場合は、アクティブシートであればシート名は省略して良いですが、他のシートを扱う時は
worksheets(“シート名”).Cells(行番号,列番号)
と記載します。
範囲の指定方法
範囲の指定方法は
Range(Cells(行番号,列番号),Cells(行番号,列番号))
で指定します。
2点のセルには【左上セル】【右下セル】を指定します。順番はどちらが先でも問題ないです。
列の指定方法
例えば左から数えて3番目の列を選択(.Select)する場合は
Columns(3).Select
と記載します。3のところの数値を変えて指定したい列を選択します。
アルファベットで指定する事もできますが、プログラムで指定するときは数値の方が使いやすいのでこの記載方法を覚えて下さい。
複数列を表す場合、例えば5列目から8列目を選択するとすると
Range(Columns(5), Columns(8)).Select
となります。
不連続な列を選択する場合、例えば1,3,5~8列を選択したいとすると
Union(Columns(1), Columns(3), Range(Columns(5), Columns(8))).Select
となります。
行の指定方法
例えば上から5行目を選択(.Select)する場合は
Rows(5).Select
となります。
複数行指定する場合は”で囲み間に:を入れて開始と終了の行を指定します。例えば5行目から10行目を選択する場合は
Rows(“5:10”).Select
となります。
不連続の行を指定する場合は、例えば1,3,5~8行目を選択したいとすると
Union(Rows(1), Rows(3), Range(Rows(5), Rows(8))).Select
となります。
プログラムのサンプルとしてもよくつかわれる表現なので、とりあえずセルと範囲指定は理解しておいて、細かい部分は、忘れたころに本記事を見直して頂けると幸いです。
VBAで最終行や最終列を指定する方法について
VBAで最終行や最終列を指定する事が多いのですが、私自身よく忘れるので自身の備忘録として残したいと思います。結論の後ろに解説を付けます。
例として1列目と1行目としていますが、必要に応じて赤文字の数字部分を変更してください。
1列目の最終行
最初に結論ですが、1列目の最終行は以下のように記載します。
Cells(Rows.Count, 1).End(xlUp).Row
解説
以下は解説となります。
Cells(Rows.Count, 1)
は1列目の一番下の行であるCells(1048576,1)を表します。
.End(xlUp)
は[Ctrl] + [↑]と同じ動作をします。つまり一番下の行から、値が入っている行まで上にアクティブセルを移動させます。
.Row
は、行数を数字で表しています。これで最終行が表示されます。.Rowが無い場合は、最終行のセルの値を取得する事になります。
時々一番下の方にメモ書きのようなものを残す方がいますので、その場合はその上の行を指定してやればよいです。例えば50,000行あたりにメモが残されていたとします。49,000行より上にデータがある事が確実だとします。
Cells(49000, 1).End(xlUp).Row
上のように記載すれば、49,000行より上で最終行を表示する事ができます。
1行目の最終列
1行目の最終列を記載する時は以下のように記載します。
Cells(1, Columns.Count).End(xlToLeft).Column
解説
以下は解説です。行の考え方とほぼ同じ流れです。
Cells(1, Columns.Count)
1行目の一番右のセルCells(1, 16384)
.End(xlToLeft)
は[Ctrl] + [←]と同じ動作をします。値が入っている行まで右にアクティブセルを移動させます。
.Column
は列を数字で表しています。これを入れる事でセルの値ではなく、列数が表示されます。
10000列も使われることはほぼないので
Cells(1, 10000).End(xlToLeft).Column
でもほぼ同じです。
今回は短めの解説でしたが、最終行、最終列は使う頻度が高いので、仕組みを理解してしっかりと記憶しておいてください。
罫線の引き方
セルの指定方法が分かると色々な事ができるようになります。そのうちの一つが罫線を引く事です。
表を作成したり、見栄えを良くするために使われる罫線ですが、セルの指定方法が分かれば簡単に引く事ができます。
一番よく使うのが範囲内を罫線で埋めて、表にするパターンです。
Range(“セル範囲“).Borders.LineStyle = xlContinuous |
例えば、上から3マス左から1マスのところから、上から10マス左から11マスのところまでの表にしたい場合は
Range(Cells(3,1),Cells(10,11)).Borders.LineStyle = xlContinuous |
となります。
また、左から1~10マスの列で、上から3~最終行までの範囲の場合は
Range(Cells(3,1),Cells(Cells(Rows.Count, 1).End(xlUp).Row,10)).Borders.LineStyle = xlContinuous |
このようになります。Rows.Count, 1のところは1列目の最終行が埋まっている前提で1としていますので、1列目の最終行が空の場合は他の列を選択してください。
更に一番外側だけ太線にしたい場合は以下のように記載します。
Range(“セル範囲“).BorderAround Weight:=xlThick |
罫線については、実用的によく使われるのはこの2つだだと思いますので、ここでは他のプロパティは割愛します。