前回は「VBAのオブジェクトについて」解説しました。
この記事では、エクセルVBAで任意のセルから連番を表示するマクロを作っていきます。
この記事を読むとVBAにおいての以下のテクニックが身に付きます。
それでは、サンプルを見ながら、一緒にマクロを作っていきましょう。
【VBA:勉強】行(縦)方向に連番を表示するマクロ:初級編【連番:行、列取得】
FOR文を使って、セルA1から連番を作っていくマクロを作っていきます。使用するのはFOR文だけなので、わかりやすいと思います。
①コードの入力
標準モジュールに以下のコードを入力しましょう。
②VBAコードの説明
VBAのコードを解説していきます。
For文は繰り返しを行う構文です。
For I = 1 to 15
処理I
Next
とすることで処理Iに1~15を代入して繰り返す構文です。
CellsオブジェクトはRangeオブジェクトと同様にセル表すオブジェクトつまり「セル」のことです。
Cellsオブジェクトは行と列でセルの位置を表します。
Cells( 1 , 1 )だと1行目の1列目、つまりセルA1のことです。
この行の部分を変数Iに置き換えているので、For文の効果によって、変数Iには1~15までの数字が順番に代入されるので、
1行目から15行目までに順番に1~15までの数字が代入されていきます。
③マクロの実行
ユーザーフォームの実行からマクロを動かしてみましょう。
コードを選んでF5を押しても動かすことができます。
④結果の出力
セルA1から下に1~15までの連番が表示されました。
【VBA:勉強】列(横)方向に連番を表示するマクロ:初級編【連番:行、列取得】
上記では行(縦)方向に連番を表示させるマクロを作成しましたが、今度は、列(横)方向に連番を表示さえるマクロを作成しましょう。
①コードの入力
標準モジュールに以下のコードを入力しましょう。
Cells( 1 , I )のIの位置が変わっていることに注意してください。
こんどはCellsの列側に変数を入れています。
②マクロの実行
ユーザーフォームの実行からマクロを動かしてみましょう。
コードを選んでF5を押しても動かすことができます。
③結果の出力
セルA1から横に1~15までの連番が表示されました。
【VBA:勉強】行(縦)方向に連番を表示するマクロ:中級編【連番:行、列取得】
行方向のセルA1を基準に連番を作るマクロを作成しましたが、連番を入力したいのが、いつも同じ場所とは限りません。もちろんVBAのコードをその都度編集していけば使用できるのですが、それでは有用なマクロとは言えません。
今度は現在セルを選択している場所から下に連番を入力するマクロを作ってい見ましょう。
基本は先ほど作った連番を入力するマクロと一緒ですが、現在選択されているセルの「行と列」を取得するコードを追記します。
①コードの入力
標準モジュールに以下のコードを入力しましょう。
②VBAコードの説明
今までのコードと基本は同じなのですが、違うところは、
現在選択されているセルの行と列を取得するために
R = ActiveCell.Row
C = ActiveCell.Column
が追記されているところです。
ActiveCellは現在選択されているセルのことです。
Rowは行番号
Columnは列番号
のことです。
R = ActiveCell.Row
C
= ActiveCell.Column
とすることで、変数Rに現在のセルの行番号を代入し、変数Cには現在のセルの列番号を代入しています。
この代入された変数RとCを使って、現在のセルの位置を取得しています。
あとは、今までのコードと同様に
For文で繰り返し処理を行っています。
繰り返しになりますが、For文は
For I = 1 to 15
処理I
Next
とすることで処理Iに1~15を代入して繰り返す構文です。
③マクロの実行
ユーザーフォームからマクロを動かしてみましょう。
コードを選択してF5を押してもマクロを動かすことができます。
④結果の出力
現在選択されているセルを起点に連番が入力されました。
【VBA:勉強】列(横)方向に連番を表示するマクロ:中級編【連番:行、列取得】
好きなセルを起点にして行方向に連番を表示させるマクロを作りましたが、今度は好きなセルを起点にして列方向(横)に連番を入力されるマクロを作って見ましょう。
①コードの入力
標準モジュールに以下のコードを入力しましょう。
行番号と列番号を取得するまでは一緒ですが、今度は変数Iを入れているところが列の変数であるCの後に入力しているところに注意してください。
②マクロの実行
ユーザーフォームからマクロを動かしてみましょう。
コードを選択してF5を押してもマクロを動かすことができます。
③結果の出力
今度は選択しているセルを起点にして列方向(横)に連番が入力されました。
まとめ FOR文を使って連番を入力するマクロを作ってみよう!
この記事では、エクセルVBAで任意のセルから連番を表示するマクロを作っていきました。
FOR文での繰り返し操作を使って、行方向(縦)、列方向(横)に連番を入力するマクロを作ることができました。
少し発展的な内容として、ROWプロパティ、COLUMNプロパティを使用して現在の選択されているセルの行番号、列番号を取得して、好きなセルを起点に連番を振るマクロを作成しました。
FOR文、ROWプロパティ、COLUMNプロパティなどはマクロを作るときに知っておくと非常に利便性の高いマクロを作ることができるので、覚えておきましょう。
このマクロをショートカットに登録しておくとすぐに起動ができるので便利です。
ちなみに、同様の処理ができる関数としてはオフィス365からはSEQUENCE関数がありますが、それ以前のバージョンのエクセルではありません。
0 件のコメント:
コメントを投稿