95671


1行おきに2行空白のセルを挿入したいのですが、下記のマクロでは1行おきに1行しか挿入できません。他の列はそのままで、C列のみ、そのような処理をしたいと思っております。

恐らく、ここが違うのだと思いますが、

[code]

    ActiveCell.Offset(行数, 0).Select
    Selection.Insert Shift:=xlDown
    
[/code]

自力では解決できず。ご教示いただけますと幸いです！

**現状のコード**

[code]

    Sub 一行おきに一行セルを挿入()
        Application.ScreenUpdating = False
        行数 = 1
        Range("C2").Select
        Do While ActiveCell.Offset(行数).Value <> ""
            ActiveCell.Offset(行数, 0).Select
            Selection.Insert Shift:=xlDown
            ActiveCell.Offset(行数).Select
        Loop
        Application.ScreenUpdating = True
    End Sub
    
[/code]


CC BY-SA 4.0
2023-07-18T07:31:43.650
95670
2023-07-19T00:36:54.093
2023-07-18T17:06:13.620
3060
58087
question
vba excel
マクロで１行おきに2行セルを挿入したいがうまく動きません


> 恐らく、ここが違うのだと思いますが、
[code]

>     ActiveCell.Offset(行数, 0).Select
>  
[/code]

はい。  
`Offset`はActiveCellからの相対位置を示すだけで、選択範囲は1セルのみです。  
複数行を挿入する場合は、`Resize`や`Range`を使用して複数行を選択した後に挿入処理を行ってください。

下記のコードは`Offset`と`Resize`を併用して目的の動作を実現するサンプルです。

[code]

    Sub 一行おきに二行セルを挿入()
        Application.ScreenUpdating = False
        行数 = 1
        Range("C2").Select
        Do While ActiveCell.Offset(行数).Value <> "" 
            ActiveCell.Offset(行数, 0).Resize(2).Select '1行下のオフセットを起点として、選択範囲を2行分にリサイズして選択
            Selection.Insert Shift:=xlDown
            ActiveCell.Offset(2).Select 'アクティブセルを2行下に移動
        Loop
        Application.ScreenUpdating = True
    End Sub
    
[/code]

**参考資料**

  * [Offset、Resizeを使いこなそう](https://excel-ubara.com/excelvba4/EXCEL210.html)


CC BY-SA 4.0
2023-07-18T08:02:51.023
95671
2023-07-19T00:36:54.093
2023-07-19T00:36:54.093
9820
9820
95670
answer