Страница 1 из 1
Помогите! Excel: обязательные ячейки?
Добавлено: 14 ноя 2008, 11:14
shao
ДОбрый день, подскажите пожалуйста как в Excel'е сделать ячийки обязательные для заполнения?
Пример:
если А1 не пустое (что-то ввели), то B1 и С1 тоже должны быть не пустыми,т.е обязательно заполнены, иначе сохрнить файл нельзя.
Кто подскажет?
Спасибо.
Андрей.
Re: Помогите! Excel: обязательные ячейки?
Добавлено: 14 ноя 2008, 13:10
AlexZZZ
Вот этот код поместите в модуль книги:
Код: Выделить всё
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
Re: Помогите! Excel: обязательные ячейки?
Добавлено: 14 ноя 2008, 15:44
shao
Спасибо, но почему-то пока не получается, не реагирует, разбираюсь..
А еще вопросик, а если у меня ячейка не только а А1, а может быть и А3 и А100, то как код поправить?
Спасибо
Re: Помогите! Excel: обязательные ячейки?
Добавлено: 14 ноя 2008, 17:35
shao
Спасибо! всё работает уже!
Re: Помогите! Excel: обязательные ячейки?
Добавлено: 15 ноя 2008, 12:16
AlexZZZ
" писал(а):А еще вопросик, а если у меня ячейка не только а А1, а может быть и А3 и А100, то как код поправить?
Всё просто: Ссылка на ячейку "Cells(номер_строки, номер_столбца)". Дальше всё зависит от Вашей задачи. Можете отслеживать изменения и на всём листе. Например так. Создайте модуль и вставьте в начало:
В модуль книги вставьте:
Код: Выделить всё
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
Re: Помогите! Excel: обязательные ячейки?
Добавлено: 17 ноя 2008, 10:11
shao
Спасибо! Все работает!