|
▼nonoka さん:
とりあえずH列の値はそれぞれの投入数にしてあります。
なお、H列を増やした際のクリアも増やすのを失念していました。
以下、Input消去 も置換てください。
Sub Sample3()
Dim n1 As Long
Dim n2 As Long
Dim nx As Long
Dim n As Long
Dim p1 As Long
Dim p2 As Long
Dim shTo As Worksheet
Dim z1 As Long
Dim z2 As Long
Dim x As Long
Dim c As Range
Set shTo = Sheets("計画表")
With Sheets("INPUT")
Call Input消去
z1 = 7 'INPUTのコピー開始行
n1 = Val(.Range("F5").Value)
n2 = Val(.Range("H5").Value)
If n1 = 0 Or n2 = 0 Then
MsgBox "F5とH5に正しい数字をいれてくださいね"
Exit Sub
End If
n = n1 \ n2
nx = n1 Mod n2
If nx > 0 Then n = n + 1
p1 = n1 \ n
If n1 Mod n > 0 Then p1 = p1 + 1
p2 = n1 - p1 * (n - 1)
If n < 1 Then
MsgBox "F5またはH5の数字が正しくないのでは?"
Exit Sub
End If
x = 6 'コピー列数
If n > 0 Then
z2 = shTo.Range("C" & shTo.Rows.Count).End(xlUp).Row + 1
.Range("C5").Resize(, x - 1).Copy .Range("C" & z1).Resize(n)
.Range("C5").Resize(, x - 1).Copy shTo.Range("C" & z2).Resize(n)
.Range("H" & z1).Resize(n - 1).Value = p1
shTo.Range("H" & z2).Resize(n - 1).Value = p1
.Range("H" & z1).Offset(n - 1).Value = p2
shTo.Range("H" & z2).Offset(n - 1) = p2
End If
End With
End Sub
Sub Input消去()
With Sheets("INPUT")
Intersect(.Range("A1", .UsedRange).Offset(6), .Columns("C:H")).ClearContents
End With
End Sub
|
|