Kirk는 Excel에서 인쇄되는 내용을 조건부로 제어하는 ​​방법이 있는지 물었습니다. 예를 들어, A1 셀에는 값이 포함되어 있으며 값은 인쇄되는 내용을 정확하게 제어합니다. A1에 1이 포함되어 있으면 Sheet1이 인쇄됩니다. 2가 포함 된 경우 Sheet1 및 Sheet2가 인쇄됩니다.

이 작업을 수행하는 유일한 방법은 매크로를 사용하는 것이며 사용할 수있는 몇 가지 방법이 있습니다. 인쇄를 제어하기 위해 단순히 Select Case 구조를 사용하는 다음의 매우 간단한 매크로를 고려하십시오.

Sub PrintStuff()

Dim vShts As Variant

vShts = Sheets(1).Range("A1")

If Not IsNumeric(vShts) Then         Exit Sub     Else         Select Case vShts             Case 1                 Sheets("Sheet1").PrintOut             Case 2                 Sheets("Sheet2").PrintOut             Case 3                 Sheets("Sheet1").PrintOut                 Sheets("Sheet2").PrintOut         End Select     End If End Sub

첫 번째 시트의 A1 셀에서 값 1, 2 또는 3으로이 매크로를 실행하면 매크로가 값에 따라 다른 항목을 인쇄합니다. 값이 1이면 Sheet1이 인쇄됩니다. 2이면 Sheet2가 인쇄됩니다. 3이면 Sheet1과 Sheet2가 모두 인쇄됩니다. 다른 값으로 다른 것을 인쇄하려면 가능한 값과 각 값에 대해 인쇄해야하는 내용을 반영하도록 Select Case 구조를 수정하면됩니다.

더욱 포괄적 인 접근 방식도 만들 수 있습니다. 통합 문서에 “제어 시트”를 추가해보십시오. 이 시트에는 첫 번째 열에 나열된 통합 문서의 각 워크 시트 이름이 있습니다. 워크 시트 이름 오른쪽의 두 번째 열에 값을 입력하면 매크로가 해당 워크 시트를 인쇄합니다.

다음 매크로를 사용하여 “제어 시트”를 만들 수 있습니다.

Sub CreateControlSheet()

Dim i as integer

On Error Resume Next   'Delete this sheet if it already exists     Sheets("Control Sheet").Delete     On Error GoTo 0

Sheets.Add   'Add the WhatToPrint Sheet     ActiveSheet.Name = "Control Sheet"



Range("A1").Select   'Label the columns     ActiveCell.FormulaR1C1 = "Sheet Name"



Range("B1").Select     ActiveCell.FormulaR1C1 = "Print?"



Cells.Select     Selection.Columns.AutoFit

For i = 1 To ActiveWorkbook.Sheets.Count         Cells(i + 1, 1).Value = Sheets(i).Name     Next End Sub

매크로는 먼저 이전 제어 시트가있는 경우 삭제합니다. 그런 다음 Control Sheet라는 새 워크 시트를 추가하고 A 및 B 열에 머리글 레이블을 넣습니다. 그런 다음 통합 문서의 모든 워크 시트를 A 열에 나열합니다.

컨트롤 시트가 생성되면 “X”또는 다른 값 (예 : “Y”또는 1)을 인쇄 할 각 워크 시트 옆의 B 열에 배치 할 수 있습니다. 그런 다음 다음 매크로는 제어 시트를 검사하고 B 열의 셀에 마크 (모든 마크)가있는 워크 시트를 인쇄합니다.

Sub PrintSelectedSheets()

Dim i as Integer     i = 2

Do Until Sheets("Control Sheet").Cells(i, 1).Value = ""

If Trim(Sheets("Control Sheet").Cells(i, 2).Value <> "") Then             Sheets(Sheets("Control Sheet").Cells(i, 1).Value).Select             ActiveWindow.SelectedSheets.PrintOut Copies:=1         End If         i = i + 1     Loop End Sub

또 다른 방법은 인쇄 직전에 실행되는 매크로를 만드는 것입니다.

인쇄는 Excel에서 트랩 할 수있는 이벤트 중 하나입니다. thisWorkbook 개체에 추가 된 다음 매크로는 인쇄를 시도 할 때마다 실행됩니다.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim vShts As Variant     Dim iResponse As Integer     Dim bPreview As Boolean

On Error GoTo ErrHandler

vShts = Sheets(1).Range("A1")

If Not IsNumeric(vShts) Then         GoTo InValidEntry     ElseIf vShts < 1 Or vShts > Sheets.Count Then         GoTo InValidEntry     Else         iResponse = MsgBox(prompt:="Do you want Print Preview?", _           Buttons:=vbYesNoCancel, Title:="Preview?")

Select Case iResponse             Case vbYes                 bPreview = True             Case vbNo                 bPreview = False             Case Else                Msgbox "Canceled at User request"

GoTo ExitHandler         End Select

Application.EnableEvents = False         Sheets(vShts).PrintOut Preview:=bPreview     End If

ExitHandler:

Application.EnableEvents = True     Cancel = True     Exit Sub

InValidEntry:

MsgBox "'" & Sheets(1).Name & "'!A1" _         & vbCrLf & "must have a number between " _         & "1 and " & Sheets.Count & vbCrLf     GoTo ExitHandler

ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

매크로는 첫 번째 워크 시트의 A1 셀에있는 값을 확인합니다. 이 값을 사용하여 인쇄 할 워크 시트를 결정합니다. 즉, 1은 첫 번째 워크 시트를 인쇄하고, 2는 두 번째를 인쇄하고, 3은 세 번째를 인쇄하는 식입니다.

A1의 값이 값이 아니거나 1보다 작거나 통합 문서의 워크 시트 수보다 크면 사용자에게 값이 잘못되었음을 알리고 매크로가 종료됩니다.

A1의 값이 범위 내에 있다고 가정하면 매크로는 인쇄 미리보기를 사용할 것인지 묻습니다. 사용자의 응답에 따라 매크로는 지정된 워크 시트를 인쇄하거나 해당 워크 시트에 대한 인쇄 미리보기를 표시합니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (13108)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Conditional_Printing [조건부 인쇄].