happypointさんのプログラムをベースにして作り変えて見ました。
行の追加と削除についてちょっと気になったんですが
A1の値が
5未満の時(つまり4以下の時)なにもせず
5以上10未満の時(つまり5,6,7,8,9のとき)一行追加でいいんでしょうか?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim varValue As Variant
Dim myRow As Long
Dim myCol As Long
Dim befRow As Long
Dim i As Integer
Const kaigyouNum = 5
'セルA1の値の取得
If Target.Address <> "$A$1" Then Exit Sub 'A1以外のイベントは無視
varValue = Range("A1").Value
'数値変換
If IsNumeric(varValue) = False Then Exit Sub '数値以外の時は処理を抜ける
varValue = Int(CLng(varValue)) '強制的に整数に変換しています。
'行数の取得
myRow = Int(varValue / kaigyouNum) '5行未満は「0」。5行以上で「1」。10行以上で「2」。
myCol = varValue - myRow * kaigyouNum '5で割った端数
'現在の挿入行数を調査
befRow = 0
Do While cells(befRow + 1, kaigyouNum + 1).Borders(xlDiagonalDown).LineStyle = xlContinuous
befRow = befRow + 1
Loop
If befRow > 0 Then
Call GyouSakujyo(befRow)
End If
'罫線クリア
Range("B:F").Borders(xlDiagonalDown).LineStyle = xlLineStyleNone
'罫線を引く(5個セット)
If myRow > 0 Then
Call GyouTsuika(myRow)
Range(cells(1, 2), cells(myRow, kaigyouNum + 1)).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
'罫線を引く(端数)
If myCol > 0 Then
Range(cells(myRow + 1, 2), cells(myRow + 1, myCol + 1)).Borders(xlDiagonalDown).LineStyle = xlContinuous
End If
End Sub
'新しい行を追加する
Private Sub GyouTsuika(sounyugyou)
Rows(2 & ":" & sounyugyou + 1).Select
Selection.Insert Shift:=xlDown
End Sub
'行を削除する
Private Sub GyouSakujyo(sakujogyou)
Rows(2 & ":" & sakujogyou + 1).Select
Selection.Delete Shift:=xlUp
End Sub
お礼
いえいえ… ありがとうございます。 もう少し考えてみようと思います。 今までの回答がかなりヒントになると思っています。