[[20130827091111]] 『複数行を一括で追加したい(マクロ)』  ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数行を一括で追加したい(マクロ)』

vba(マクロ)の初心者です。
例えばA2〜A10セルまでデータが入っている場合に
それぞれのデータの下に4行ずつ行を追加したくて
以下のようなマクロを組んでみました。
(A1セルにはタイトルのようなものが最初から入っています)

現状、4行追加は出来ているのですが、これを5行や3行と
増減をさせる方法が知りたいです。

よろしくお願いします。

――――――――――――――――――――――――――――――

Sub 複数行挿入()
' 行数毎に空白4行挿入()
Application.ScreenUpdating = False
行数 = 2
Range("A1").Select
Do While ActiveCell.Offset(行数).Value <> ""
ActiveCell.Offset(行数, 0).Rows("1:4").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(行数 + 1).Select
Loop
Application.ScreenUpdating = True
End Sub

――――――――――――――――――――――――――――――

(おちゃ)


 こんにちは

 Sub test()
    Dim i As Long
    Dim r As Long
    Const 追加行数 As Long = 4
    r = Range("A" & Rows.Count).End(xlUp).Row
    Application.ScreenUpdating = False
    For i = r To 2 Step -1
        If Range("A" & i).Value <> "" Then
            Range("A" & i + 1).Resize(追加行数).EntireRow.Insert
        End If
    Next
    Application.ScreenUpdating = True
 End Sub

 Selectしないコードの書き方に慣れた方がいいです。

 (ウッシ)


 Application.ScreenUpdating = False
 挿入行数 = 2
 行 = 2

 Do While Cells(行, 1).Value <> ""
   Cells(行, 1).EntireRow.Resize(挿入行数).Insert Shift:=xlDown
   行 = 行 + 挿入行数 + 1
 Loop
 Application.ScreenUpdating = True
 BJ

 こういうのもあるよ!
 行の挿入は、お尻からやる方がスムーズです。

 ウッシさんもおっしゃってますが、Selectしないやり方を覚えることと
 なるべく主語を付けたコードを書くとあとあとみやすくなります。
 この場合、「With Sheets("Sheet1")〜End With」がその役割を果たしています。

Sub 行の挿入()

    Dim Ins_Row As Integer '挿入する行
    Dim End_Row As Long    '一番上のデータがある行
    Dim Str_Row As Long    '一番下のデータがある行
    Ins_Row = 4
    End_Row = 2

    With Sheets("Sheet2")
        Str_Row = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
        For i = Str_Row To End_Row + 1 Step -1
            If .Cells(i, "A") <> "" Then .Rows(i & ":" & i + Ins_Row - 1).Insert Shift:=xlDown
        Next
    End With
End Sub

 (稲葉)こっそり差し替え9:54

みなさま
ありがとうございました。
やりたかったことが出来てとてもうれしいです。

どれもわかりやすくて勉強になりました。
ウッシさん、稲葉さんのおっしゃる
Selectせずに組めるようにがんばります。

(おちゃ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.