Поэтому я спрашиваю об этом потому, что я не уверен, почему этот код не работает, поэтому я запутался.Я не знаю, как сделать что-то конкретное.
Так что есть некоторые даты, которые "сохраняются" в диапазоне AK23: AL72.Предполагается, что этот код сравнивает сохраненные даты с датами в диапазоне K23: L72, и если какая-либо дата в строках: 23,35,36,45,46,47 отличается, он запрашивает у пользователя видимые приглашения в MsgBox.,Если какие-либо другие даты, не входящие в эти конкретные строки, отличаются, предполагается, что пользователь запросит примечания через InputBox.То, что он делает, это просто подсказывает через MsgBox любую другую дату.Это также делает некоторые другие вещи, но это все работает правильно.Я понятия не имею, почему, если честно, все подсказки такие странные, я говорил об этом около часа или двух.
Я знаю, что код немного грубоват, но я довольно нов в этом.
Dim i As Integer
Dim j As Integer
For i = 0 To 49
cRow = i + 23
For j = 0 To 1
If Sheets("Monthly Status").Cells(cRow, j + 11) <> Sheets("Monthly Status").Cells(cRow, j + 37) Then
If cRow = 23 Or 35 Or 36 Or 45 Or 46 Or 47 Then
ans = MsgBox("You made a change to a critical deliverable date, do you want to continue?", vbYesNo + vbQuestion)
If ans = vbNo Then
MsgBox "You are not authorized to make this change!", vbCritical
Application.ScreenUpdating = False
Sheets("Monthly Status").Cells(cRow, j + 37).Copy
Sheets("Monthly Status").Cells(cRow, j + 11).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
If ans = vbYes Then
ans = MsgBox("Do you have Scope Change Aproval?", vbYesNo + vbQuestion)
If ans = vbNo Then
MsgBox "You are not authorized to make this change! Changes to critical dates will be rolled back.", vbCritical
Application.ScreenUpdating = False
Sheets("Monthly Status").Cells(cRow, j + 37).Copy
Sheets("Monthly Status").Cells(cRow, j + 11).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End If
End If
Application.ScreenUpdating = False
Sheets("Monthly Status").Range("K23:L72").Copy
Sheets("Monthly Status").Range("AK23:AL72").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
Else
End If
End If
If Sheets("Monthly Status").Cells(cRow, j + 11) <> Sheets("Monthly Status").Cells(cRow, j + 37) Then
Worksheets("Monthly Status Footnotes").Unprotect Password:="SCPV3"
Worksheets("Monthly Status Footnotes").Cells(MSFFreeRow, "D").value = InputBox("You changed a date, you must enter revison notes!", "Notes")
Application.ScreenUpdating = False
Worksheets("Monthly Status Footnotes").Protect Password:="SCPV3"
Sheets("Monthly Status").Range("K23:L72").Copy
Sheets("Monthly Status").Range("AK23:AL72").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End
End If
Next j
Next i
Дальнейшее уточнение:
Очень сложно объяснить с помощью письменных слов.Поэтому я проверяю все ячейки в диапазоне K23: L72 и сравниваю их с соответствующими сохраненными датами в AK23: AL72.Затем, если дата в K23: L72 отличается от своей соответствующей даты в AK23: AL72, мне нужно проверить, встречается ли эта измененная дата в одной из этих строк: 23,35,36,45,46,47, если это то, то яНужно предложить пользователю серию вопросов, если ответ на оба вопроса - да, тогда я сохраняю лист и сохраняю новые даты в AK23: AL72.Если ответ на любой вопрос - «нет», то дату, которая была изменена, необходимо заменить старой датой ответа ядра из диапазона AK23: AL72, после чего лист будет сохранен.Если дата, которая была изменена, отсутствует в одной из этих строк, но все еще отличается, мне нужно запросить у пользователя примечания, а затем сохранить лист и затем сохранить новые даты в AK23: AL72.Если ничто не отличается вообще, лист должен просто сохранить.