Sub ПечатьСмета() If Range("F9").Value = "" Then If MsgBox("Материала нет в наличии. Хотите продолжить?", _ vbExclamation + vbYesNo, "Сообщение макроса") = vbNo Then Exit Sub End If End If If Len(Range("H9")) Then Range("H4").Select Sheets("Забор").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Главный" Range("H4").Select Sheets("Воз").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Duplex Dogovor" Application.ScreenUpdating = False Dim sh As Worksheet, lr As Long, i As Long For Each sh In ThisWorkbook.Sheets If sh.Name Like "Скл*" Then With sh 'If Not Intersect(.Range("A5:A31"), .UsedRange) Is Nothing Then lr = .Cells(Rows.Count, 1).End(xlUp).Row q = 0 For Each cl In .Range("A5:A31").Cells If cl.Value <> "" Then q = q + 1 Next cl If q > 0 Then For i = lr To 5 Step -1 If .Cells(i, 1) = "" Then .Rows(i).Hidden = True Next i .PrintOut Copies:=1 End If End With End If Next sh Application.ScreenUpdating = True
Else MsgBox "Проверьте заполнение: номер договора, число, цвет, шапку заказа и красные ячейки!" End If Sheets("Забор").Select End Sub
[/vba]
В этом коде, в листах (где есть хоть какая то информация в диапазоне A5:A31) Скл 1, Скл 2 и Скл 3 скрываются пустые строчки и после печатаются Вопрос: Как сделать что бы они обратно открывались после того как напечатаются?
Добрый день! [vba]
Код
Sub ПечатьСмета() If Range("F9").Value = "" Then If MsgBox("Материала нет в наличии. Хотите продолжить?", _ vbExclamation + vbYesNo, "Сообщение макроса") = vbNo Then Exit Sub End If End If If Len(Range("H9")) Then Range("H4").Select Sheets("Забор").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Главный" Range("H4").Select Sheets("Воз").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, ActivePrinter:="Duplex Dogovor" Application.ScreenUpdating = False Dim sh As Worksheet, lr As Long, i As Long For Each sh In ThisWorkbook.Sheets If sh.Name Like "Скл*" Then With sh 'If Not Intersect(.Range("A5:A31"), .UsedRange) Is Nothing Then lr = .Cells(Rows.Count, 1).End(xlUp).Row q = 0 For Each cl In .Range("A5:A31").Cells If cl.Value <> "" Then q = q + 1 Next cl If q > 0 Then For i = lr To 5 Step -1 If .Cells(i, 1) = "" Then .Rows(i).Hidden = True Next i .PrintOut Copies:=1 End If End With End If Next sh Application.ScreenUpdating = True
Else MsgBox "Проверьте заполнение: номер договора, число, цвет, шапку заказа и красные ячейки!" End If Sheets("Забор").Select End Sub
[/vba]
В этом коде, в листах (где есть хоть какая то информация в диапазоне A5:A31) Скл 1, Скл 2 и Скл 3 скрываются пустые строчки и после печатаются Вопрос: Как сделать что бы они обратно открывались после того как напечатаются?temnoo
Sub ПечатьСмета() If Range("F9").Value = "" And MsgBox("Материала нет в наличии. Хотите продолжить?", _ vbExclamation + vbYesNo, "Сообщение макроса") = vbNo Then Exit Sub If Len(Range("H9")) Then Sheets("Забор").PrintOut Copies:=1, Collate:=True, ActivePrinter:="Главный" Sheets("Воз").PrintOut Copies:=1, Collate:=True, ActivePrinter:="Duplex Dogovor" Application.ScreenUpdating = False Dim sh As Worksheet, lr As Long, i As Long For Each sh In ThisWorkbook.Sheets If sh.Name Like "Скл*" Then With sh lr = .Cells(Rows.Count, 1).End(xlUp).Row q = 0 On Error Resume Next q = .Range("A5:A31").SpecialCells(2).Count If q Then Range(.Cells(5, 1), .Cells(lr, 1)).SpecialCells(4).EntireRow.Hidden = True .PrintOut Copies:=1 .UsedRange.EntireRow.Hidden = 0 End If End With End If Next Application.ScreenUpdating = True Else MsgBox "Проверьте заполнение: номер договора, число, цвет, шапку заказа и красные ячейки!" End If End Sub
[/vba]
Мусора много в макросе. [vba]
Код
Sub ПечатьСмета() If Range("F9").Value = "" And MsgBox("Материала нет в наличии. Хотите продолжить?", _ vbExclamation + vbYesNo, "Сообщение макроса") = vbNo Then Exit Sub If Len(Range("H9")) Then Sheets("Забор").PrintOut Copies:=1, Collate:=True, ActivePrinter:="Главный" Sheets("Воз").PrintOut Copies:=1, Collate:=True, ActivePrinter:="Duplex Dogovor" Application.ScreenUpdating = False Dim sh As Worksheet, lr As Long, i As Long For Each sh In ThisWorkbook.Sheets If sh.Name Like "Скл*" Then With sh lr = .Cells(Rows.Count, 1).End(xlUp).Row q = 0 On Error Resume Next q = .Range("A5:A31").SpecialCells(2).Count If q Then Range(.Cells(5, 1), .Cells(lr, 1)).SpecialCells(4).EntireRow.Hidden = True .PrintOut Copies:=1 .UsedRange.EntireRow.Hidden = 0 End If End With End If Next Application.ScreenUpdating = True Else MsgBox "Проверьте заполнение: номер договора, число, цвет, шапку заказа и красные ячейки!" End If End Sub