Страница: 1 |
Вопрос: внесение изменений в листе не активируя его? | Добавлено: 22.09.09 09:20 |
Автор вопроса: ![]() |
Всем доброго дня!
Столкнулся с ситуацией, когда необходимо внести изменения (выполняется макрос) в неактивном листе книги, листов много и при выполнении начинается "скачка" по листам, после чего происходит процедура печати. Если отключаю обновление экрана (.ScreenUpdating = False) то на печать выводится не тот результат, который должен быть. Именно на печать, при переходе на лист все просчитано верно, да там и вычисление элементарное типа Worksheets(".").Range("A1").Value = Worksheets(".").Range("A2").Value. А вот с печатью проблема. Вес код выглядит так и его задумка: печать определенного количества экз. листа книги равного результату в ячейке другого листа. Private Sub CommandButton7_Click() Sheets(".").Select Worksheets(".").Range("A1").Value = _ Worksheets(".").Range("A2").Value Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("..") Dim i As Integer i = Val(ws.Range("...")) ' равный количеству экз., i = IIf(i, i, i + 1) ' при этом возможен результат равный "" или 0. Sheets(Array("..")).Select ' выбираю нужный лист ActiveSheet.PrintOut , , i ' печатаем количество Sheets(Array(".")).Select ' возвращаюсь обратно End Sub |
Ответы | Всего ответов: 7 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 13 Ответов: 348 |
Профиль | Цитата | #1 | Добавлено: 22.09.09 10:13 |
Ну и огород.
Sheets(Array(".."
![]() Нафига?
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 12 Ответов: 23 |
Профиль | Цитата | #2 | Добавлено: 22.09.09 12:09 |
Спасибо, но не совсем то. Наверно не корректно сформулировал проблему. Опишу код с пояснением: данные о количестве копий для печати берутся на одном листе (лист2) из ячейки с10, а распечатывается лист1, при этом упр. кнопка располагается на листе2. Не срабатывает ввод данных в ячейку А39 на листе1 при отключении обновления экрана. Если убрать обновление, то все работает, но из-за слабых компов начинает тормозить, "бегать" по листам, что и не устраивает. With Application .ScreenUpdating = False 'отключение обновление экрана .Calculation = xlCalculationManual 'отключение пересчёт формул вручную End With Sheets("лист1" ![]() Worksheets("лист1" ![]() ![]() Worksheets("лист1" ![]() ![]() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("лист2" ![]() Dim i As Integer i = Val(ws.Range("с10" ![]() i = IIf(i, i, i + 1) ' при этом возможен результат равный "" или 0. Sheets(Array("лист1" ![]() ActiveSheet.PrintOut , , i ' печатаем количество Sheets(Array("лист2" ![]() With Application .ScreenUpdating = True .Calculation = xlCalculationAutomatic End With End Sub |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 13 Ответов: 348 |
Профиль | Цитата | #3 | Добавлено: 24.09.09 09:42 |
Я и говорю - чтоб не бегало по листам:
Dim PrintSheet As Excel.Worksheet 'rem Set PrintSheet = Sheets("Лист1" ![]() PrintSheet.PrintOut , , i ' печатаем количество rem Sheets(Array("лист2" ![]() ну и вначале Sheets("лист1" ![]() Теперь понятно? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 12 Ответов: 23 |
Профиль | Цитата | #4 | Добавлено: 24.09.09 11:18 |
Спасибо за помощь GDK, но это как в анекдоте "умом понимаю, но.." В результате обработки получаю "run-time error 13, type mismatch" на строке ![]() Тут и торможу. Если не сложно - почему не идет? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 13 Ответов: 348 |
Профиль | Цитата | #5 | Добавлено: 25.09.09 09:41 |
|
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 13 Ответов: 348 |
Профиль | Цитата | #6 | Добавлено: 25.09.09 09:43 |
Чтобы выделить текст как код - надо его сначала выбрать мышкой, затем нажать синюю кнопку "Код". |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 12 Ответов: 23 |
Профиль | Цитата | #7 | Добавлено: 28.09.09 09:00 |
Спасибо за помощь! |
Страница: 1 |
|