Автор: arturhome Понедельник, 17 Марта 2008, 13:31
Есть простенкий макрос
Код
Sub кодсправка()
For i = 1 To 100 'тут диапазон указываеться а как сделать что бы цикл выполнялся до последней не пустой ячейки?
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveSheet.Next.Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("AIDS").Select
Range("I11").Select
If IsNumeric(ActiveCell.Value) Then
ActiveCell.Value = ActiveCell.Value + 1
End If
Next
End Sub
Цифра в активной яйчеки отображает порядковым номер из списка который в свое время подставляется в форму для дальнейшей распечатки страницы
Как дописать код что бы весь процесс повторялся автоматически до последнего порядкового номера в списке.
Автор: Квазимодо Вторник, 18 Марта 2008, 11:50
arturhome, а твой макрос что должен делать? Печатать все листы из книги и после печати каждого листа увеличивать на 1 номер в ячейке I11 листа "AIDS"? Тогда лучше попробовать другой цикл:
Код
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name <> "AIDS" Then 'это чтобы пропустить печать самого листа AIDS
Ws.PrintOut Copies:=1, Collate:=True
Sheets("AIDS").Select
Range("I11").Select
If IsNumeric(ActiveCell.Value) Then
ActiveCell.Value = ActiveCell.Value + 1
End If
End If
Next
Автор: arturhome Вторник, 18 Марта 2008, 14:10
Квазимодо Чет ругаеться твой код..
Да код должен напечатать все листы из книги в том числе и лист "AIDS"
Вобщем чуть поподробней..
Есть книга
в книге к примеру 3 листа
Лист1, Лист2. Лист3
На Лист1 список из 150 - 250 наименований кторый меняеться может 170.. 180 ... и.тд
Лист2 Форма настроеная под формулу ВПР() связанная с Лист1
Лист3 Форма настроеная под формулу ВПР() связанная с Лист1
макрос должен распечатать Лист2 и Лист3 и увеличить цифру в ячейки "I11" на Лист2
и так до последней не пустой ячейки Лист1
Печать Л2, Л3
возврат на Л2
+1 ячека I11
и опять Печать Л2, Л3....
до тех пор пока на Л1 не закончиться список..
Автор: Квазимодо Вторник, 18 Марта 2008, 14:47
arturhome, а на что этот код ругался? Вроде бы перетащил с твоего кода... А вообще-то, если у тебя список идет до первой пустой строки, то цикл уже будет не For, а While (что-то вроде
Код
While Not IsEmpty(Worksheets("Лист1").Cells(j,1).Value)
... 'твои действия
j=j+1
Wend
). Вместо Cells(j,1) подставишь что-то свое, если список у тебя не в первом столбце.
Автор: arturhome Четверг, 20 Марта 2008, 15:30
Что то не получаеться.. я же чайник ))
Автор: Квазимодо Пятница, 21 Марта 2008, 16:43
А можно подробнее, что именно не получается? Выскакивают ошибки при выполнении? Неправильные значения в тех ячейках, где ВПР()? Еще что-то? А то как-то не протелепатировать...
Автор: arturhome Суббота, 22 Марта 2008, 9:09
Цитата(Квазимодо @ Вторник, 18 Марта 2008, 14:47)
arturhome, а на что этот код ругался? Вроде бы перетащил с твоего кода... А вообще-то, если у тебя список идет до первой пустой строки, то цикл уже будет не For, а While (что-то вроде
Код
While Not IsEmpty(Worksheets("Лист1").Cells(j,1).Value)
... 'твои действия
j=j+1
Wend
). Вместо Cells(j,1) подставишь что-то свое, если список у тебя не в первом столбце.
Квазимодо, все мои познания в коде VBA это записать макрос и просматерть код..
все остальное я пользуюсь помощью других хороших людей.. могу еще в справку залезть и почитать.. по экспериментировать..
с формулами все в порядке
я вставил свои действия в твой код.. но он не хочет работать..
даже не запускается
ругается на эту строчку While Not IsEmpty(Worksheets("Лист1").Cells(j,1).Value)
если ты напишешь полный код возможно что то я делаю не так..
могу выслать на мыло фаил .. что бы было более понятно..
скинь свое мыло..
Автор: Квазимодо Понедельник, 24 Марта 2008, 9:34
Ага... Первое подозрение - что у тебя включено Option Explicit, а переменная j не определена. Или не задано значение перед входом в цикл. Но лучше все же вышли файл мне (alex_i собак electra-n тчк ru).