У меня в проекте используется данный способ для проверки исключения повторяющихся значений. Просто уже избегаю вносить дополнительные формулы ввиду огромного их количества дополнительных тормозов. Стараюсь теперь такие задачи перекладывать на макросы." писал(а):Кстати, вы можете для проверки на заполнение нужных ячеек использовать
валидацию данных
Проверка на заполнение.
Модератор: Naeel Maqsudov
-
- Сообщения: 5
- Зарегистрирован: 20 янв 2011, 12:57
Макросы замечательные но увы проблемки начались
Ограничиваю диапазон
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-м приложенном файле реализована функция – если не заполнены ячейки хотя бы в одной строке – не дает переходить с листа на лист и закрыть файл – этот лучше с табличкой
Как эту функцию внести в макрос ?
Заранее благодарен
Ограничиваю диапазон
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-м приложенном файле реализована функция – если не заполнены ячейки хотя бы в одной строке – не дает переходить с листа на лист и закрыть файл – этот лучше с табличкой
Как эту функцию внести в макрос ?
Заранее благодарен
- Вложения
-
- Проверка на за.zip
- (60.85 КБ) 22 скачивания
-
- Сообщения: 5
- Зарегистрирован: 20 янв 2011, 12:57
Получилось выделить исходный диапазон – проверил ошибок не выдает
Осталось сделать подсветку незаполненных ячеек в строке вместо MsgBox + если не заполнены ячейки хотя бы в одной строке – не дает переходить с листа на лист и закрыть файл – вылазит табличка "Полностью Заполните поля строки !"
Пока не знаю как реализовать
Файлик прилагаю.
Код
Осталось сделать подсветку незаполненных ячеек в строке вместо 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
- Вложения
-
- Проверка на за.zip
- (9.23 КБ) 23 скачивания
Посмотрите пример во вложении.
-
- Сообщения: 5
- Зарегистрирован: 20 янв 2011, 12:57
Огромнейшая благодарность SAS88 - ну Вы действительно чудеса творите!
Мой код детский по сравнению с Вами-работает только чуть поправить надо ..Но ваш это просто чудо как работает !!Я бы сам не допер до этого - точно ...
Мой файлик конечно приложу чтоб сравнить - но применять конечно надо код уважаемого SAS888
Мой код детский по сравнению с Вами-работает только чуть поправить надо ..Но ваш это просто чудо как работает !!Я бы сам не допер до этого - точно ...
Мой файлик конечно приложу чтоб сравнить - но применять конечно надо код уважаемого SAS888
- Вложения
-
- Проверка на за.zip
- (62.32 КБ) 36 скачиваний