Как проверить с помощью цикла vba, при каждом вводе данных в активную ячейку, есть ли значение(любое) в предыдущих(влево от активной ячейки) 6 ячейках строки, если есть во всех 6 подряд то запретить ввод(или msg) а если нет то можно дальше вводить данные. Нужно чтобы при составления графика дежурства на дому вводить не больше 6 дней дежурств(одного работника), потом выходной и опять по новой. В графике реализована форма для заполнения. Хочу установить проверку, чтобы было заполнено не больше 6 ячеек дальше пустая ячейка и опять 6 дней дежурства. Вот код одной кнопки(нужно сюда вставить цикл проверки заполоненных ячеек):
Код
Private Sub CommandButton1_Click()
If Not Intersect(ActiveCell, Range("B8:AF15")) Is Nothing Then
If ActiveCell.Offset(, -1) = "/3" Then
MsgBox ("ЗАБОРОНЕНО!!!"), vbCritical + vbDefau, "ПОМИЛКА"
ActiveCell.Offset(, 0) = ""
Exit Sub
Else
If ActiveCell.Offset(, -1) = 1.5 Then
MsgBox ("ЗАБОРОНЕНО!!!"), vbCritical + vbDefau, "ПОМИЛКА"
ActiveCell.Offset(, 0) = ""
Exit Sub
Else
Selection = 1.75
ActiveCell.Offset(, 1).Select
End If
End If
End If
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Никуда, в активной ячейке вводится ("") Этот код на кнопке, при вводе 1,75 если в предыдущей ячейке стоит /3 или 1.5 - msg "ввод запрещен" а активная ячейка делается пустая. Ну можно наверное просто через selection ввести(я только учусь).
If ActiveCell.Column > 7 Then
If ActiveCell.Offset(0, -1) <> "" And ActiveCell.Offset(0, -2) <> "" _
And ActiveCell.Offset(0, -3) <> "" And ActiveCell.Offset(0, -4) <> "" _
And ActiveCell.Offset(0, -5) <> "" And ActiveCell.Offset(0, -6) <> "" Then
MsgBox ("НИЗЗЯ!!!")
ActiveCell.Offset(, 1).Select