2015-02-16 2 views
1

Мы ищем макрос, который после нажатия пользователем кнопки печати удалит всю строку, если столбец I имеет значение 0. Его удаление всего. http://i.imgur.com/1SVDVLi.jpgзапустить макрос после печати кнопки

Private Sub Workbook_BeforePrint(Cancel As Boolean) 

    Sub DeleteRows() 
    Dim c As Range 
    Dim SrchRng 

    Set SrchRng = ActiveSheet.UsedRange 
    Do 
     Set c = SrchRng.Find("0", LookIn:=xlValues) 
     If Not c Is Nothing Then c.EntireRow.Delete 
    Loop While Not c Is Nothing 
End Sub 

ответ

1

Этот код работает для меня.

  • Избавиться от "Sub DeleteRows()" - Не знаю, почему это было в вашей функции
  • Set SrchRng так, что он только ищет столбец I
  • Удалите цитаты из SrchRng.Find ("0")

Здесь с изменениями:

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Dim c As Range 
Dim SrchRng 
Set SrchRng = Intersect(ActiveSheet.UsedRange, Range("I:I")) 'Just Search Column I 
Do 
    Set c = SrchRng.Find(0, LookIn:=xlValues)    'Remove Quotes on this line 
    If Not c Is Nothing Then c.EntireRow.Delete 
Loop While Not c Is Nothing 
End Sub 

Кроме того, это должно сделать трюк, если вы просто хотите использовать For Loop

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Dim x 
Application.ScreenUpdating = False 
For x = 1 to Cells(Rows.Count, 9).End(xlUp).Row 
    If Cells(x, 9).Value = 0 Then 
     Cells(x, 9).EntireRow.Delete 
    End If 
Next x 
Application.ScreenUpdating = True 
End Sub 
+0

Похоже, что это удаление всего, где столбец у меня ничего нет. В этом случае мне нужно, чтобы первые 7 строк никогда не удалялись. http://i.imgur.com/7pqIBdi.jpg - Также не работает макрос на 'print' – eggwhites

+1

Спасибо, что это работает. – eggwhites

Смежные вопросы