|
▼nonoka さん:
こんにちは
Q,R,V列の式をそちらの式にかえ、D1列〜L列まで、すべて(全行) 1 をいれて実行。
やはり、正常に日付調整されましたが?
以下のコードを標準モジュールに書き、実行してみてください。
ループに入ってしばらくすると ★ のとことが黄色くなって止まります。
その状態で、コードの中の n1 n2 n3 x1 x2 x3 .Range("Q1").Value .Range("R1").Value
.Range("V1").Value と書いてある部分にマウスを当て、それぞれ、浮かび上がる値をメモして教えていただけませんか?
(メモしたら、VBE画面の 実行(R)-->リセット(R) で処理を終了させてください。
Sub Test()
Dim z As Long
Dim c As Range
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Dim n1 As Long
Dim n2 As Long
Dim n3 As Long
Dim x1 As Long
Dim x2 As Long
Dim x3 As Long
Dim y As Long
Dim d As Date
Dim col As Variant
With Sheets("計画表")
z = .Range("C" & .Rows.Count).End(xlUp).Row - 9 'データ数
Set r1 = .Range("Q10").Resize(z)
Set r2 = .Range("R10").Resize(z)
Set r3 = .Range("V10").Resize(z)
.Range("K10").Resize(z).ClearContents
n1 = .Range("Q6").Value
n2 = .Range("R6").Value
n3 = .Range("V6").Value
If WorksheetFunction.Min(n1, n2, n3) < 1 Then
MsgBox "Q6,R6,V6には1以上の数値をいれてください"
Exit Sub
End If
For Each c In .Range("C10").Resize(z)
With c.EntireRow
.Range("K1").Value = c.Value '入力日->開始日
y = 0
Do
x1 = WorksheetFunction.CountIf(r1, .Range("Q1").Value)
x2 = WorksheetFunction.CountIf(r2, .Range("R1").Value)
x3 = WorksheetFunction.CountIf(r3, .Range("V1").Value)
If x1 <= n1 And x2 <= n2 And x3 <= n3 Then Exit Do
.Range("K1").Value = .Range("K1").Value + 1 '翌日
y = y + 1
If y > 100 Then
Stop '★
End If
Loop
End With
Next
End With
End Sub
|
|