VBAでの処理分岐方法を教えてほしいです
VBAの分岐処理で悩んでおります。
誰かお助けお願いします。
A列に昇順で番号があります。
1
2
4
4
5
6
9
欠番や重複した数値があります。
やりたいことは欠番箇所に行を挿入し、連番にしたいです。
この例で言うと、3行目に1行を挿入し番号を3と入れる、6行目に2行挿入し7,8と連番にする。
連番になった後に、重複した数値に色を付けます。
以下私が作成したコードです。callで呼び出す予定です。
Sub 欠番判定数式()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 3) = "=if(iserror(if(A" & i & "-A" & i - 1 & ">1,""○"","" "")),"""",if(A" & i & "-A" & i - 1 & ">1,""○"","" ""))"
Next
End Sub
Sub 行挿入()
Dim c As Range, Target As Range
For Each c In Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
If c = "○" Then
If Target Is Nothing Then ''(1)
Set Target = c
Else
Set Target = Union(Target, c) ''(2)
End If
End If
Next c
If Not Target Is Nothing Then Target.Select
Selection.EntireRow.Insert , copyorigin:=xlFormatFromLeftOrAbove
End Sub
Sub 空白連番入力()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "" Then
Cells(i, 1) = (Cells(i, 1).Offset(1, 0).Value) - 1
End If
Next
End Sub
Sub 番号重複確認()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Application.WorksheetFunction.CountIf(Range("$A$2:$A$" & Cells(Rows.Count, 1).End(xlUp).Row), Range("A" & i)) <> 1 Then
Cells(i, 1).Interior.ColorIndex = 3
End If
Next
End Sub
このコードを順に全て実行した時、1回目の処理で3行目と5行目に行挿入、そして番号が3と7と入力され連番に色が設定されます。
再度「欠番判定数式」を行い、次は8行目に行挿入し8と連番を入力させ処理を繰り返しさせたいです。
欠番は例として最高2個にしてますが、これから2個以上の可能性もあります。
一度全処理終了後、再度最初の処理(欠番判定数式)に戻り、欠番がある場合は行挿入させという処理を行わせ、欠番がない場合は次の処理に進めるという分岐方法を教えてほしいです。
よろしくお願いいたします
お礼
ご回答ありがとうございました。 質問文章が支離滅裂なのに、その要約までしてくださり・・・。(^^;) rows(prow).resize(1) は全く無意味だったんですね。 この構文に何か意味があるんだろうとおもっていたので、その意味(効果)を教えてほしかったのと、質問文のマクロでEnd Ifの次の「次の行を調べるため+1する」が正しく機能しているのか?を教えてほしかったのです。 また機会があれば、よろしくお願いいたします。