ДОбрый день, подскажите пожалуйста как в Excel'е сделать ячийки обязательные для заполнения?
Пример:
если А1 не пустое (что-то ввели), то B1 и С1 тоже должны быть не пустыми,т.е обязательно заполнены, иначе сохрнить файл нельзя.
Кто подскажет?
Спасибо.
Андрей.
Помогите! Excel: обязательные ячейки?
Модератор: Naeel Maqsudov
Вот этот код поместите в модуль книги:
Код: Выделить всё
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Len(Worksheets("Лист1").Cells(1, 1).Value) > 0 And (Len(Worksheets("Лист1").Cells(1, 2).Value) = 0 _
Or Len(Worksheets("Лист1").Cells(1, 3).Value) = 0) Then
MsgBox "Невозможно сохранить документ!" & Chr(10) & "Заполните ячейки «B1» и «С1»."
Cancel = True
End If
End Sub
Спасибо, но почему-то пока не получается, не реагирует, разбираюсь..
А еще вопросик, а если у меня ячейка не только а А1, а может быть и А3 и А100, то как код поправить?
Спасибо
А еще вопросик, а если у меня ячейка не только а А1, а может быть и А3 и А100, то как код поправить?
Спасибо
Спасибо! всё работает уже!
Всё просто: Ссылка на ячейку "Cells(номер_строки, номер_столбца)". Дальше всё зависит от Вашей задачи. Можете отслеживать изменения и на всём листе. Например так. Создайте модуль и вставьте в начало:" писал(а):А еще вопросик, а если у меня ячейка не только а А1, а может быть и А3 и А100, то как код поправить?
Код: Выделить всё
Option Explicit
Global TargetRow As Long
Код: Выделить всё
Option Explicit
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If TargetRow > 0 Then
If Len(Cells(TargetRow, 1).Value) > 0 And (Len(Cells(TargetRow, 2).Value) = 0 Or Len(Cells(TargetRow, 3).Value) = 0) Then
MsgBox "Невозможно сохранить документ!" & Chr(10) & "Заполните ячейки «B" & TargetRow & "» и «С" & TargetRow & "»."
Cancel = True
End If
End If
End Sub
Код: Выделить всё
Option Explicit
Sub Worksheet_Change(ByVal Target As Range)
If TargetRow > 0 And Target.Row <> TargetRow Then
If Len(Cells(TargetRow, 1).Value) > 0 And (Len(Cells(TargetRow, 2).Value) = 0 Or Len(Cells(TargetRow, 3).Value) = 0) Then
MsgBox "Заполните ячейки «B" & TargetRow & "» и «С" & TargetRow & "»."
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
End If
TargetRow = Target.Row
End Sub