Excel VBA データの1行おきに指定した数の空白行を挿入する

スポンサーリンク

データの1行おきに指定した数の空白行を挿入する

Application【アプリケーション】オブジェクトのInputBox【インプットボックス】メソッドを使用してユーザーから空白行の数を受け取りその数を元にデータの1行おきにその数の空白行を挿入するコードについて解説します。

実行結果

1行おきに指定した数の空白行を挿入するコードと解説

Sub 空白行挿入()
Dim 挿入数 As Integer
Dim 最終行 As Long
Dim i As Long
Dim メッセージ As String
メッセージ = "挿入したい行数を入力してください。"
挿入数 = Application.InputBox(prompt:=メッセージ, Type:=1)
With ActiveSheet
最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = 最終行 To 2 Step -1
If .Cells(i, 1) <> "" Then
.Rows(i & ":" & i + 挿入数 - 1).Insert Shift:=xlDown
Application.ScreenUpdating = True
End If
Next i
End With
End Sub
2行目【Dim 挿入数 As Integer】
メッセージボックスから受け取る挿入する空白行の数を格納する変数「挿入行」を整数型(Integer)で宣言します。


3行目【Dim 最終行 As Long】
データが入力されている最終行の行番号を格納する変数「最終行」を長整数型(Long)で宣言します。


4行目【Dim i As Long】
繰り返し処理で使用するカウンター変数「i」を長整数型(Long)で宣言します。


5行目【Dim メッセージ As String】
Application【アプリケーション】オブジェクトのInputBox【インプットボックス】メソッドで表示するメッセージを設定する引数Prompt【プロンプト】に設定するメッセージを格納する変数「メッセージ」を文字列型(String)で宣言します。


6行目 【メッセージ = “挿入したい行数を入力してください。”】
変数「メッセージ」に文字列を代入します。


7行目 【挿入数 = Application.InputBox(prompt:=メッセージ, Type:=1)】
Application【アプリケーション】オブジェクトのInputBox【インプットボックス】メソッドを使用してユーザーから挿入したい空白行の行数を受け取り、変数「挿入数」に代入します。


8行目【With ActiveSheet】
アクティブシートをWith【ウィズ】ステートメントで指定します。


9行目【最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row】
Cells【セルズ】プロパティで1列目のWorksheet【ワークシート】オブジェクトのRows【ロウズ】プロパティで参照した行を表すRange【レンジ】オブジェクトのCount【カウント】プロパティで参照したセルの最終行からRange【レンジ】オブジェクトのEnd【エンド】プロパティを使用してセルの最終行から上方向にデータが入力されている最終行まで移動してRow【ロウ】プロパティを使用してその行番号を取得し、変数「最終行」に代入します。


10行目【Application.ScreenUpdating = False】
Application【アプリケーション】オブジェクトのScreenUpdating【スクリーンアップディティング】プロパティにFalseを設定して、処理の高速化のために画面更新を抑止します。


11行目【For i = 最終行 To 2 Step -1】
For【フォー】ステートメントを使用して繰り返し処理の始まりです。処理の中でカウンター変数「i」にデータが入力されている最終行数が格納されている変数「最終行」からStep【ステップ】キーワードに指定した-1、つまり上方向に2行目までの行番号を代入します。


12行目【If .Cells(i, 1) <> “” Then】
If【イフ】ステートメントを使用して1列目の変数「i」行目のセルが空白「””」ではないときを定義します。


13行目 【.Rows(i & “:” & i + 挿入数 – 1).Insert Shift:=xlDown】
上記の条件式が成立した場合、つまり、選択したセルが空白ではないとき、With【ウィズ】ステートメントで指定したアクティブシートのRows【ロウズ】プロパティを使用して変数「i」行目~変数「i」行+変数「挿入数」-1行の行を参照してRange【レンジ】オブジェクトのInsert【インサート】メソッドを使用して空白行を挿入します。


14行目【Application.ScreenUpdating = True】
Application【アプリケーション】オブジェクトのScreenUpdating【スクリーンアップディーティング】プロパティにTrueを設定して抑止していた画面更新を再開します。

挿入した空白行を削除するコードと解説

Sub 空白削除()
Dim 最終行 As Long
Dim i As Long
With ActiveSheet
最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = 最終行 To 2 Step -1
If .Cells(i, 1) = "" Then
.Rows(i).Delete
Application.ScreenUpdating = True
End If
Next i
End With
End Sub
2行目【Dim 最終行 As Long】
データが入力されている最終行の行番号を格納する変数「最終行」を長整数型(Long)で宣言します。


3行目【Dim i As Long】
繰り返し処理で使用するカウンター変数「i」を長整数型(Long)で宣言します。


4行目【With ActiveSheet】
アクティブシートをWith【ウィズ】ステートメントで指定します。


5行目【最終行 = .Cells(.Rows.Count, 1).End(xlUp).Row】
Cells【セルズ】プロパティで1列目のWorksheet【ワークシート】オブジェクトのRows【ロウズ】プロパティで参照した行を表すRow【ロウ】オブジェクトのCount【カウント】プロパティで参照したセルの最終行からRange【レンジ】オブジェクトのEnd【エンド】プロパティを使用してセルの最終行から上方向にデータが入力されている最終行まで移動してRow【ロウ】プロパティを使用してその行番号を取得し、変数「最終行」に代入します。


6行目【Application.ScreenUpdating = False】
Application【アプリケーション】オブジェクトのScreenUpdating【スクリーンアップディティング】プロパティにFalseを設定して、処理の高速化のために画面更新を抑止します。


7行目【For i = 最終行 To 2 Step -1】
For【フォー】ステートメントを使用して繰り返し処理の始まりです。処理の中でカウンター変数「i」にデータが入力されている最終行数が格納されている変数「最終行」からStep【ステップ】キーワードに指定した-1、つまり上方向に2行目までの行番号を代入します。


8行目【If .Cells(i, 1) = “” Then】
If【イフ】ステートメントを使用して1列目の変数「i」行のセルが空白「””」だったときを定義します。


9行目【.Rows(i).Delete】
8行目の条件式が成立したとき、つまり空白行だったとき、Rows【ロウズ】プロパティでその行を参照してRange【レンジ】オブジェクトのDelete【デリイト】メソッドでその行を削除します。


10行目【Application.ScreenUpdating = True】
Application【アプリケーション】オブジェクトのScreenUpdating【スクリーンアップディーティング】プロパティにTrueを設定して抑止していた画面更新を再開します。

以上でデータの1行おきに指定した数の空白行を挿入する方法と空白行を削除する方法についての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告