|
こんにちは。かみちゃん です。
>延々と処理が終わらなくなりました・・。
ご提示されたサンプルで、まずは試されましたか?
ただし、No2の値に1が入ると、無限ループ(延々と処理が終わらないこと)になります。
従いまして、1が入っている場合を考慮すると、以下の★部分を追加してください。
なお、No2の値が0以下の場合、整数以外の数値、文字列の場合は考慮していません。
Option Explicit
Sub Macro1()
Dim RowNo, RowNo2 As Long
'2行目より処理を開始します。
RowNo = 2
Do While Cells(RowNo, 1).Value <> ""
'No2の値が1よりも大きいとき
If Cells(RowNo, 2).Value > 1 Then '★
Rows(RowNo).Copy
Rows(RowNo + 1 & ":" & RowNo + Cells(RowNo, 2) - 1).Insert Shift:=xlDown
For RowNo2 = 1 To Cells(RowNo, 2)
Cells(RowNo + RowNo2 - 1, 3) = RowNo2
Next
Else '★
'No2の値が1以下の場合
'ただし、0はないものとする。
Cells(RowNo, 3) = 1 '★
End If '★
RowNo = RowNo + Cells(RowNo, 2)
Loop
Application.CutCopyMode = False
Range("A1").Select
End Sub
|
|