Страница 5 из 5

Re: Проверка на заполнение.

Добавлено: 14 июл 2007, 14:46
AlexZZZ
&quot писал(а):Кстати, вы можете для проверки на заполнение нужных ячеек использовать
валидацию данных
У меня в проекте используется данный способ для проверки исключения повторяющихся значений. Просто уже избегаю вносить дополнительные формулы ввиду огромного их количества дополнительных тормозов. Стараюсь теперь такие задачи перекладывать на макросы.

Не работает в выд диапазоне - как сделать правильно

Добавлено: 07 фев 2011, 16:22
Uralmaster
Макросы замечательные но увы проблемки начались
Ограничиваю диапазон

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column >= 2 And Target.Column <= 6 And Target.Row >= 8 And Target.Row <= 701 Then
k = Target.Row - 7
If Len(Cells(k, 2)) = 0 Or Len(Cells(k, 3)) = 0 Or Len(Cells(k, 4)) Or Len(Cells(k, 5)) = 0 Or Len(Cells(k, 6)) = 0 Or Len(Cells(k, 7)) = 0 Then
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
MsgBox " 'Скобки не нужны! Здесь это оператор а не функция!
End If
End Sub

Если проверяемые строки начинаются с 8 строки то ввожу ограничение диапазона (файлик приложил)
'If Target.Column >= 2 And Target.Column <= 6 And Target.Row >= 8 And Target.Row <= 701 Then

Не хочет работать

Ввожу в начале
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("B8:H801"), Target) Is Nothing Then
Тоже не хочет

Ввел k = Target.Row – 7 чтоб с 8 строки начал заполнять – работает с 8 строки
Но если зайдешь выше – ошибка опять


Прошел код нормально другой выложенный ранее но только в оригинале
(оригинал макроса ранее дает ошибку в 1 строке - этот не дает)
Private Sub Worksheet_Change(ByVal Target As Range)
flag = 0
If Target.Row <> 1 Then
For j = 2 To 7 Step 1
If Cells(Target.Row - 1, j) = "" Then
flag = 1
End If
Next j
If flag = 1 Then
Application.EnableEvents = False
Target.Value = ""
Application.EnableEvents = True
MsgBox ("Заполните всю информацию по дате ")
End If
End If
End Sub

Вопрос1: как нормально сделать ограничение диапазона ?

Вопрос2: менять цвет фона ячеек которые должны быть заполнены при текущей проверке на оттенок красного вместо таблички ( она часто вылазит и надоедает)

Вопрос3: Во 2-м приложенном файле реализована функция – если не заполнены ячейки хотя бы в одной строке – не дает переходить с листа на лист и закрыть файл – этот лучше с табличкой
Как эту функцию внести в макрос ?

Заранее благодарен

Re: Проверка на заполнение.

Добавлено: 08 фев 2011, 09:24
Uralmaster
Получилось выделить исходный диапазон – проверил ошибок не выдает

Осталось сделать подсветку незаполненных ячеек в строке вместо MsgBox + если не заполнены ячейки хотя бы в одной строке – не дает переходить с листа на лист и закрыть файл – вылазит табличка "Полностью Заполните поля строки !"
Пока не знаю как реализовать

Файлик прилагаю.


Код

Код: Выделить всё

Private Sub Worksheet_Change(ByVal Target As Range)
flag = 0
If Target.Column >= 2 And Target.Column <= 7 And Target.Row > 8 And Target.Row <= 701 Then ‘ вводим диапазон где будет проверка
For j = 2 To 7 Step 1
If Cells(Target.Row - 1, j) = "" Then
flag = 1
End If
Next j
If flag = 1 Then
Application.EnableEvents = False
Target.Value = ""
Application.EnableEvents = True
MsgBox ("Заполните всю информацию по дате")
End If
End If
End Sub

Re: Проверка на заполнение.

Добавлено: 25 фев 2011, 07:58
SAS888
Посмотрите пример во вложении.

Огромнейшая благодарность SAS888

Добавлено: 27 фев 2011, 09:19
Uralmaster
Огромнейшая благодарность SAS88 - ну Вы действительно чудеса творите!
Мой код детский по сравнению с Вами-работает только чуть поправить надо ..Но ваш это просто чудо как работает !!Я бы сам не допер до этого - точно ...

Мой файлик конечно приложу чтоб сравнить - но применять конечно надо код уважаемого SAS888