Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 12:17   #1
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию Печать по порядку - 2

В продолжение темы http://programmersforum.ru/showthrea...55#post1039855

Есть таблица с ярлыками, и макрос, который выделяет не нулевые по количеству ярлыки. Проблема в том, что если в строке все значения кол-ва равны нулю, то макрос выдаёт ошибку:

Цитата:
Run-time error '91':

Object variable or With block variable not set
Самуан, плиз, хелп ми!
Вложения
Тип файла: zip Я(2).zip (9.8 Кб, 7 просмотров)
Ogeris вне форума Ответить с цитированием
Старый 16.05.2012, 12:32   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Решение в лоб и простое - добавить счётчик внутрь
If Cells(R, C).Value <> 0 Then
и перед
V.PrintOut
проверить его состояние.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.05.2012, 12:55   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
If Cells(R, C).Value <> 0 Then
по-моему, так будет лучше:

Код:
If IsEmpty(Cells(R, C).Value) Then
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 16.05.2012, 13:16   #4
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию

А куда его нужно вставить?

Попробовал так:

Код:
Dim V As Range
Dim S&, R&, C&
S = Columns(1).Rows(30).End(xlUp).Row
For R = 8 To S Step 15
    For C = 1 To 16
        If Cells(R, C).Value <> 0 Then
        If V Is Nothing Then Set V = Range(Cells(R - 7, C), Cells(R + 7, C)) Else Set V = Union(V, Range(Cells(R - 7, C), Cells(R + 7, C)))
        End If
    Next C
    If IsEmpty(Cells(R, C).Value) Then
    V.PrintOut Copies:=1, Collate:=True: Set V = Nothing
    End If
Next R
End Sub
Но не помогает :-(
Ogeris вне форума Ответить с цитированием
Старый 16.05.2012, 13:23   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ogeris, Вы сперва попробуйте понять, как работает код.
Тогда станет понятно, что куда вставлять
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.05.2012, 13:27   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Вай, косякнул я))) надо было так сделать:

Код:
If Not IsEmpty(Cells(R, C).Value) Then
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 16.05.2012, 13:28   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Без счётчика:
Код:
  If Not V Is Nothing Then V.PrintOut Copies:=1, Collate:=True: Set V = Nothing
Но не проверял...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать по порядку Ogeris Microsoft Office Excel 5 16.05.2012 17:26
программа,по перестановке элементов по порядку. denis2010 Помощь студентам 0 18.05.2011 21:24
Внесение данных по порядку Dog_DinGo Microsoft Office Excel 2 25.03.2011 20:03
Стек, вивести у зворотньому порядку Sonne_asja Паскаль, Turbo Pascal, PascalABC.NET 1 13.03.2011 15:14
создать файлы с номерами по порядку volodya100 Общие вопросы Delphi 4 28.01.2011 09:00