Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите разобраться с макросом в Excel (http://forum.oszone.net/showthread.php?t=208399)

camope3 06-06-2011 21:17 1689563

Помогите разобраться с макросом в Excel
 
Есть очень простой макрос часть которого приведена ниже:
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 1689678

Цитата:

Цитата camope3
при условии что ячейка A1 не заполнена макрос не выполнял свою работу, ( шел переход на End Sub) а пользователю высвечивалось окошко предупреждения о не заполненной ячейки? »

Код:

If Not IsEmpty(Workbooks.Item(…).Worksheets.Item(…).Cells.Item(1, 1).Value) Then
    …
Else
  MsgBox "A1 is empty!"
End If

Цитата:

Цитата camope3
Если к примеру ячейка A3 пустая то можно ли сделать так, »

Проверяйте аналогично примеру выше.

camope3 07-06-2011 13:39 1689920

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 1690020

Справка по тегам форума

Цитата:

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

Какую ошибку?

Я предполагал, что Вы немного знакомы с объектной моделью Microsoft Excel. Вместо:
Код:

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

camope3 07-06-2011 17:21 1690091

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

camope3 07-06-2011 23:57 1690331

Проблема решена:
Код:

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. Оказалось что нужно было заключить в условие всю процедуру.


Время: 09:59.

Время: 09:59.
© OSzone.net 2001-