Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » VBAでアクティブセルの一つ下のセルにデータを入力する

VBAでアクティブセルの一つ下のセルにデータを入力する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「アクティブセルの1つ下のセルに、文字列「abc」を表示する マクロ」
という検索でこのサイト・インストラクターのネタ帳へのアクセスがありました。

アクティブなセルの1つ下のセルに「abc」という文字列を表示するには、VBAでどのようなコードを書けばいいのか、サンプルマクロを探していた方による検索キーワードです。

[スポンサードリンク]

変数とCellsを使ってアクティブセルの一つ下のセルにデータを入力するサンプルマクロ

まず理解していただきたいのは、行番頭と列番号を変数に格納しておいて、Cellsプロパティを利用するプロシージャです。

Sub アクティブセルの一つ下のセルにデータ入力_変数とCells()
 Dim row_num As Long
 Dim col_num As Long

 row_num = ActiveCell.Row
 col_num = ActiveCell.Column

 Cells(row_num + 1, col_num).Value = "abc"
End Sub

ショートカットキー[F8]でステップ実行を行って、
  row_num = ActiveCell.Row
  col_num = ActiveCell.Column
の2行を実行したあとに、変数・row_numとcol_numにどのような数値が入力されているかを、メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示して確認してください。

アクティブセルの行番号と列番号がそれぞれ格納されているはずです。

変数・row_numに格納されているアクティブセルの行番号に、「+ 1」した数値をCellsプロパティの第1引数に指定すると、
  Cells(row_num + 1, col_num).Value =
アクティブセルの一つ下のセルを表すRangeオブジェクトを取得できるという考え方を、まず理解してください。

WithとCellsを使ってアクティブセルの一つ下のセルにデータを入力するサンプルマクロ

同じ考え方で、変数を使わず、WithキーワードとCellsを使った以下のような書き方もできます。
Sub アクティブセルの一つ下のセルにデータ入力_WithとCells()
 With ActiveCell
  Cells(.Row + 1, .Column).Value = "abc"
 End With
End Sub

先のマクロより難易度は上がりますが、やっていることは同じです。

Offsetを使ってアクティブセルの一つ下のセルにデータを入力するサンプルマクロ

Cellsプロパティの引数に、足し算・引き算を行った数値を指定するのと考え方は同じですが、RangeオブジェクトのOffsetプロパティを使うと、以下のようなすっきりしたコードで済みます。
Sub アクティブセルの一つ下のセルにデータ入力_Offset()
 ActiveCell.Offset(1, 0).Value = "abc"
End Sub

Range.Offsetプロパティをご存じなかった方は、「ActiveCell.Offset(1, 0).Select」というコードをOffsetの引数を変更しながら、何度か実行してみてください。

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » Offsetプロパティ » VBAでアクティブセルの一つ下のセルにデータを入力する

「Offsetプロパティ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.