PDA

Показать полную графическую версию : [решено] Помогите разобраться с макросом в Excel


camope3
06-06-2011, 21:17
Есть очень простой макрос часть которого приведена ниже:
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 06.06.2011 (User)
'

'
Range("A2") = Range("A2") * Range("A1") / 10
Range("A3") = Range("A3") * Range("A1") / 10
Range("A4") = Range("A4") * Range("A1") / 10
Range("A5") = Range("A5") * Range("A1") / 10
Range("A6") = Range("A6") * Range("A1") / 10
Range("A7") = Range("A7") * Range("A1") / 10
Range("A8") = Range("A8") * Range("A1") / 10
End Sub
Вносятся данные в ячейки A1, A2, A3 ... После отработки макроса данные ячеек перезаписываются. Как видно все расчеты ссылаются на ячейку A1.
Так вот вопрос:
Можно ли, если можно, то как, сделать так что бы при условии что ячейка A1 не заполнена макрос не выполнял свою работу, ( шел переход на End Sub) а пользователю высвечивалось окошко предупреждения о не заполненной ячейки?
И вопрос второй:
Если к примеру ячейка A3 пустая то можно ли сделать так, что бы не выполнялось действие над этой ячейкой (ячейка оставалась пустая, расчет НЕ выполнялся), а шел переход на обработку следующей строчки?
Заранее благодарен.

Iska
07-06-2011, 01:04
при условии что ячейка A1 не заполнена макрос не выполнял свою работу, ( шел переход на End Sub) а пользователю высвечивалось окошко предупреждения о не заполненной ячейки? »
If Not IsEmpty(Workbooks.Item(…).Worksheets.Item(…).Cells.Item(1, 1).Value) Then

Else
MsgBox "A1 is empty!"
End If

Если к примеру ячейка A3 пустая то можно ли сделать так, »
Проверяйте аналогично примеру выше.

camope3
07-06-2011, 13:39
Iska, Спасибо за совет! С пустыми ячейками разобрался, с всплывающим окошком тоже вот загвоздка з условием если ячейка A1 пустая завершение работы макроса.

If Not IsEmpty(Workbooks.Item(…).Worksheets.Item(…).Cells.Item(1, 1).Value) Then
Else
MsgBox "A1 is empty!"
End Sub
End If
Выкидывает ошибку компиляции, поправте пожалуйста.

Iska
07-06-2011, 16:02
Справка по тегам форума (http://forum.oszone.net/misc.php?do=bbcode)

Выкидывает ошибку компиляции, поправте пожалуйста. »
Какую ошибку?

Я предполагал, что Вы немного знакомы с объектной моделью Microsoft Excel. Вместо:
Workbooks.Item(…).Worksheets.Item(…)
Вы должны были любым способом указать Ваши данные — потребную рабочую книгу и потребный рабочий лист этой книги.

camope3
07-06-2011, 17:21
С этим у меня проблем нету книгу и лист я указал естественно (не хотел замусоривать форум своими названиями), а ошибка: Block If без End If что как бы логично, только как это обойти? Повторюсь что все работает кроме этой зацепки.

camope3
07-06-2011, 23:57
Проблема решена:
Sub User()
If Range("A1") = "" Then
MsgBox "Не заполнены ключевые данные!!!"
End If
If Range("A1") <> "" Then
If Range("A2") <> "" Then
Range("A2") = Range("A2") * Range("A1") / 10
End If
If Range("A3") <> "" Then
Range("A3") = Range("A3") * Range("A1") / 10
End If
End If
End Sub
Никак не мог догадаться как сделать так, что бы не выполнялась процедура расчета при пустой ячейке А1. Оказалось что нужно было заключить в условие всю процедуру.




© OSzone.net 2001-2012