Страницы: 1
RSS
Ошибка макроса при отсутствии данных в ячейке, Макрос выдает ошибку
 

Добрый день, помогите с макросом

Код
Sub PDF_Галеника()
Application.ScreenUpdating = False
Worksheets("Галеника").Select
Dim Fname As String
Fname = "C:\Users\LESINVEST-M\Desktop\Галеника\Заявки\" & Worksheets("Галеника").Range("B8").Value
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fname, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Worksheets("Данные").Select
End Sub

Макрос выполняет сохранение листа книги в формате PDF, но, если в ячейке B8, нет данных, макрос выдает ошибку и открывается VBA. Какую строчку необходимо дописать, что бы при отсутствии данных в ячейке B8, макрос выдал СООБЩЕНИЕ о пустой ячейке, а не переходил в VBA.
Изменено: Роман - 20.10.2021 07:02:04
 
Оберните создание .pdf в условие
Код
If Worksheets("Галеника").Range("B8").Value <> "" Then 
    ' здесь создаем файл
End If
 
Спасибо, частично помогло, если ячейка В8 пустая, то функционирует, но не работает если в ячейке B8 прописана формула
 
Но формула выдает какое-то значение? Вместо пустой строки - пробел, например
 
Цитата
Роман: Какую строчку необходимо дописать, что бы при отсутствии данных в ячейке B8, макрос выдал СООБЩЕНИЕ о пустой ячейке
Пробуйте
Изменено: Jack Famous - 20.10.2021 09:47:18
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
vikttur, в случае если формула выдает значение, то макрос работает, а если не выдает, то макрос не работает
 
Цитата
Роман написал:
в случае если формула
Вы бы хоть текст формулы привели. Может она не пустое значение выдает, отсюда и проблемы.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Вы бы хоть текст формулы привели. Может она не пустое значение выдает, отсюда и проблемы.
=ВПР("+";Список!$A$2:$AG$923;4;0)

P.S. прошу закрыть тему, так как я неправильно обозначил проблему, мой пример отличается от рабочей книги...  
 
Роман, #5 не помог?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Роман написал:
=ВПР("+";Список!$A$2:$AG$923;4;0)
ну так при возвращении данных из пустой ячейки листа Список формула вернет 0, но никак не пусто. Поэтому надо определяться жестко: могут ли возвращаемые данные быть реально нулями, а не результатом вытяжки из пустых ячеек(т.е. допустимо ли приравнять 0 к пустой ячейке). Тогда можно что-то думать. В противном случае нужен вообще другой подход к решению задачи.
Изменено: Дмитрий(The_Prist) Щербаков - 20.10.2021 12:59:30
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, выделил у Романа, а кнопку нажал у меня  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
выделил у Романа, а кнопку нажал у меня
исправил
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Тогда можно что-то думать
Да не надо ничего думать. Просто в начале маркоса пишем:
Код
On Error Go To metka
, а в конце пишем:
Код
metka:
IF Err <> 0 Then Msgbox "There is NO Value in Cell «B8»!"

И ВСЁ!
 
Цитата
Jack Famous написал:
Роман , #5 не помог?
Нет, Ваш прием не помог.

Цитата
Неопытный_Экселист написал:
Да не надо ничего думать. Просто в начале маркоса пишем:
Спасибо за решение, то что нужно!

Благодарю всех за участие.
 
Цитата
Роман: Ваш прием не помог
это невозможно в силу его простоты - значит вы неверно описали причины

Цитата
Роман: [на совет выходить по любой ошибке] то что нужно
ну-ну — удачи с таким подходом  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
ну-ну — удачи с таким подходом
1)Там Msgbox, а не выход из макроса при любой ошибке.
2) А какие у такого решения подводные камни?
 
Цитата
Неопытный_Экселист написал:
А какие у такого решения подводные камни?
из самого очевидного могу сказать так: пропуск будет при любой ошибке, не обязательно при ошибке отсутствия данных в ячейке. Считать это ошибкой или нет - решать автору проблемы. Собственно, я уже писал примерно об этом:
Цитата
Дмитрий(The_Prist) Щербаков написал:
надо определяться жестко: могут ли возвращаемые данные быть реально нулями, а не результатом вытяжки из пустых ячеек
т.е. любое ли значение в ячейке, приводящее к ошибке надо считать неверным или надо дополнительно обрабатывать.
Я лично всегда за доп.обработки в таких случаях, но ведь бывает и неважно знать саму ошибку - лишь бы пользователь понимал, что создать файл не удалось и смотрел уже на месте по ходу дела.
Автору подошло - значит решение верное :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков: Считать это ошибкой или нет - решать автору проблемы
ну как бы да, однако автор вполне однозначно в шапке написал
Цитата
Роман: Какую строчку необходимо дописать, что бы при отсутствии данных в ячейке B8, макрос выдал СООБЩЕНИЕ о пустой ячейке
и я дал абсолютно ТОЧНЫЙ и ОДНОЗНАЧНЫЙ ответ, показав проверку ячейки на пустоту  :D
Редко, когда так однозначно получается и ещё более реже - когда это, якобы, "не подходит" — как ВООБЩЕ может не подойти проверка на пустоту ячейки, если именно её ты сам же и просил…?
Хроники биполярочки, как по мне  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
как ВООБЩЕ может не подойти проверка на пустоту ячейки, если именно её ты сам же и просил…?
Потому, что позже было уточнение:
Цитата
Роман написал:
Спасибо, частично помогло, если ячейка В8 пустая, то функционирует, но не работает если в ячейке B8 прописана формула
И теперь одной пустоты мало  :D
Дмитрий(The_Prist) Щербаков,
Большущее спасибо за объяснения.
 
Цитата
Неопытный_Экселист: было уточнение
спасибо - пропустил
Код
' вставить между 4ой и 5ой строкой
    With "C:\Users\LESINVEST-M\Desktop\Галеника\Заявки\" & Worksheets("Галеника").Range("B8")
        If .HasFormula Then MsgBox "There is Formula in Cell «B8»!", vbCrirtcal, "FORMULA": Exit Sub                    ' проверка на формулу
        FName = .Value2: If Len(FName) = 0 Then MsgBox "There is NO Value in Cell «B8»!", vbCrirtcal, "EMPTY": Exit Sub ' присвоение значения перемнной и проверка на пустоту
    End With
Роман, впредь при изменении условий, обновляйте шапку темы, т.к. не всем интересно читать переписку, а также вместо "Нет, Ваш прием не помог" в ваших же интересах написать, почему
Изменено: Jack Famous - 21.10.2021 12:29:35
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Еще раз всем спасибо, впредь постараюсь при формулировке вопроса указать все сопутствующие факторы, что бы не было сумбура
Страницы: 1
Наверх