タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

VBAで連番を入力するマクロの作り方を徹底解説【FOR・ROW・COLUMN関数】

VBA

t f B! P L

 

連番のサンプル画像

前回は「VBAのオブジェクトについて」解説しました。

この記事では、エクセルVBAで任意のセルから連番を表示するマクロを作っていきます。

この記事を読むとVBAにおいての以下のテクニックが身に付きます。

取得できること

FOR文での繰り返し操作

ROWプロパティでの行の取得

COLUMNプロパティでの列の取得

それでは、サンプルを見ながら、一緒にマクロを作っていきましょう。

VBA:勉強】行(縦)方向に連番を表示するマクロ:初級編【連番:行、列取得】

FOR文を使って、セルA1から連番を作っていくマクロを作っていきます。使用するのはFOR文だけなので、わかりやすいと思います。

①コードの入力

標準モジュールに以下のコードを入力しましょう。

VBAのコード

Sub セルA1から連番()

For I = 1 TO 15

Cells( I , 1 ).Value = I

Next

End Sub

マクロのコードの説明

VBAコードの説明

VBAのコードを解説していきます。

For文は繰り返しを行う構文です。

For I = 1 to 15

処理I

Next

とすることで処理I115を代入して繰り返す構文です。

CellsオブジェクトはRangeオブジェクトと同様にセル表すオブジェクトつまり「セル」のことです。

Cellsオブジェクトは行と列でセルの位置を表します。

Cells( 1 , 1 )だと1行目の1列目、つまりセルA1のことです。

この行の部分を変数Iに置き換えているので、For文の効果によって、変数Iには115までの数字が順番に代入されるので、

1行目から15行目までに順番に115までの数字が代入されていきます。

③マクロの実行

ユーザーフォームの実行からマクロを動かしてみましょう。

コードを選んでF5を押しても動かすことができます。

マクロの起動画面

④結果の出力

セルA1から下に115までの連番が表示されました。

結果の画面

VBA:勉強】列(横)方向に連番を表示するマクロ:初級編【連番:行、列取得】

上記では行(縦)方向に連番を表示させるマクロを作成しましたが、今度は、列(横)方向に連番を表示さえるマクロを作成しましょう。 

①コードの入力

標準モジュールに以下のコードを入力しましょう。

VBAのコード

Sub セルA1から連番()

For I = 1 TO 15

Cells( 1 , I ).Value = I

Next

End Sub 

Cells( 1 , I )Iの位置が変わっていることに注意してください。

こんどはCellsの列側に変数を入れています。

マクロのコードの説明

②マクロの実行

ユーザーフォームの実行からマクロを動かしてみましょう。

コードを選んでF5を押しても動かすことができます。

マクロの起動画面

③結果の出力

セルA1から横に115までの連番が表示されました。

結果の出力

VBA:勉強】行(縦)方向に連番を表示するマクロ:中級編【連番:行、列取得】

行方向のセルA1を基準に連番を作るマクロを作成しましたが、連番を入力したいのが、いつも同じ場所とは限りません。もちろんVBAのコードをその都度編集していけば使用できるのですが、それでは有用なマクロとは言えません。

今度は現在セルを選択している場所から下に連番を入力するマクロを作ってい見ましょう。

基本は先ほど作った連番を入力するマクロと一緒ですが、現在選択されているセルの「行と列」を取得するコードを追記します。 

①コードの入力

標準モジュールに以下のコードを入力しましょう。

VBAのコード

Sub 好きなところから連番()

R = ActiveCell.Row

C = ActiveCell.Column

For I = 1 To 15

Cells(R-1+I, C).Value = I

Next

End Sub

マクロのコード
 

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

とすることで処理I115を代入して繰り返す構文です。 

③マクロの実行

ユーザーフォームからマクロを動かしてみましょう。

コードを選択してF5を押してもマクロを動かすことができます。

マクロの実行

④結果の出力

現在選択されているセルを起点に連番が入力されました。

結果の出力

VBA:勉強】列(横)方向に連番を表示するマクロ:中級編【連番:行、列取得】

好きなセルを起点にして行方向に連番を表示させるマクロを作りましたが、今度は好きなセルを起点にして列方向(横)に連番を入力されるマクロを作って見ましょう。

①コードの入力

標準モジュールに以下のコードを入力しましょう。

VBAのコード

Sub 好きなところから連番()

R = ActiveCell.Row

C = ActiveCell.Column

For I = 1 To 15

Cells(R, C-1+I).Value = I

Next

End Sub

行番号と列番号を取得するまでは一緒ですが、今度は変数Iを入れているところが列の変数であるCの後に入力しているところに注意してください。

マクロのコード

②マクロの実行

ユーザーフォームからマクロを動かしてみましょう。

コードを選択してF5を押してもマクロを動かすことができます。

マクロの実行

③結果の出力

今度は選択しているセルを起点にして列方向(横)に連番が入力されました。

マクロの結果

まとめ FOR文を使って連番を入力するマクロを作ってみよう!

この記事では、エクセルVBAで任意のセルから連番を表示するマクロを作っていきました。

FOR文での繰り返し操作を使って、行方向(縦)、列方向(横)に連番を入力するマクロを作ることができました。

少し発展的な内容として、ROWプロパティ、COLUMNプロパティを使用して現在の選択されているセルの行番号、列番号を取得して、好きなセルを起点に連番を振るマクロを作成しました。

FOR文、ROWプロパティ、COLUMNプロパティなどはマクロを作るときに知っておくと非常に利便性の高いマクロを作ることができるので、覚えておきましょう。

このマクロをショートカットに登録しておくとすぐに起動ができるので便利です。

ちなみに、同様の処理ができる関数としてはオフィス365からはSEQUENCE関数がありますが、それ以前のバージョンのエクセルではありません。


koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ