Доброго времени суток уважаемые форумчане. Помогите допилить макрос печати, сам не бум-бум в VBA. Макрос был любезно предоставлен одним из участников форума. Суть проблемы: Есть макрос печати 2-х накладных, нужно чтоб при пустых(незаполненных) ячейках печать не происходила и выскакивало сообщение о незаполненной накладной или подсвечивало пустую ячейку. Иногда в процессе формирования накладной при длительной работе на автомате пропускаешь и отправляешь на печать не полностью заполненную накладную. Критерием является заполненные ячейки диапазона B10:B40 и незаполненные ячейки диапазона F10:G40. Например Если в ячейке B10 есть данные, то ячейки F10 или G10 не должны быть пустыми и при печати выводилось сообщение о пустых ячейках, ну или подсвечивало их. Надеюсь правильно объяснил, может в файле будет наглядней. Файл прилагаю. Заранее спасибо.
Исправил. Не заметил объединённых ячеек. --- Новый вариант. Усложнил (+выделение пустой яч.) в начало макроса:
Код
bBreak = False
With WorksheetFunction
For i = 10 To 40
cnt = .CountA(Range("B" & i & ",F" & i & ":G" & i))
If cnt < 3 And cnt > 0 Then
For Each cl In Range("B" & i & ",F" & i & ":G" & i)
If Len(cl.Value) = 0 Then cl.Select: bBreak = True: Exit For
Next cl
Exit For
End If
Next i
If bBreak Then
MsgBox "Заполнены не все поля."
Exit Sub
End If
End With
JayBhagavan написал: Не заметил объединённых ячеек.
Можно так:
Код
If Evaluate("COUNTA(b10:B40)") * 2 <> Evaluate("COUNTA(f10:g40)") Then MsgBox "Заполнены не все поля.": Exit Sub
или
If Evaluate("(COUNTA(b10:B40) * 2) <> COUNTA(f10:g40)") Then MsgBox "Заполнены не все поля.": Exit Sub
KuklP, Спасибо, тоже работает. А что лучше выбрать? Заметил некую разницу между вашим кодом и JayBhagavan, Ваш код также работает, но у JayBhagavan, при нажатии на кнопку ОК в меседжбоксе происходит перерисовка экрана, ну то есть обновление(мерцает), как бы не существенно, но все же.
P.S. Вау JayBhagavan, не заметил, что вы свое сообщение отредактировали и усовершенсвовали макрос. Сразу и не понял, что собственно изменилось, вы написали выделение ячейки происходит. Я то думал что цветом. Вот сижу и жду когда она выделиться. Теперь понял, что она становиться просто активной. Ну в принципе в паре с надстройкой ZVI_CoordSelection от Владимира, вполне даже и подсвечивает. Спасибо большое всем.
JayBhagavan написал: В коде ".Select" - это выделить/выбрать. Там нет "Activate".
Извините JayBhagavan, не так выразился, просто я еще не очень разбираюсь. В любом случае спасибо, помогли решить вопрос. KuklP, тоже огромное спасибо, кстати если не изменяет память, могу конечно ошибиться, но макрос печати в файле вроде бы ваш. Давно это было, не помню, боюсь кого-то обидеть.