Kirk spurgte, om der er en måde at betinget styre, hvad der udskrives i Excel. For eksempel celle A1 indeholder en værdi, og værdien styrer præcis, hvad der udskrives. Måske hvis A1 indeholder 1, så Ark1 udskrives; hvis det indeholder 2, så Ark1 og Ark2 udskrives.
Den eneste måde at gøre dette på er med en makro, og der er flere metoder, du kan bruge. Overvej følgende meget simple makro, der blot bruger en Select Case struktur til at styre udskrivningen.
Sub PrintStuff ()
Dim vShts As Variant
vShts = Sheets (1) .Range ("A1")
Hvis ikke IsNumeric (vShts) Derefter
Exit Sub
Andet
Vælg Case vShts
Case 1
Sheets ("Ark1"). PrintOut
Case 2
Sheets ("Ark2"). PrintOut
Case 3
Sheets ("Ark1"). PrintOut
Sheets ("Ark2"). PrintOut
End Select
End hvis
End Sub
Kør denne makro med værdien 1, 2 eller 3 i celle A1 i det første ark, og de makro prints forskellige ting baseret på værdien. Hvis værdien er 1, så Ark1 udskrives; hvis det er 2, så Sheet2 udskrives; og hvis det er 3, så både Ark1 og Ark2 udskrives. Hvis du vil have forskellige værdier for at udskrive forskellige ting, bare ændre Select Case struktur afspejler de mulige værdier, og hvad der skal udskrives for hver værdi.
Der kan oprettes en mere omfattende tilgang, så godt. Overvej at tilføje en "kontrol ark" til din projektmappe. Dette ark ville have navnet på hvert regneark i projektmappen opført i den første kolonne. Hvis du sætter en værdi til højre for et navn regneark, i den anden kolonne, så en makro vil udskrive den tilsvarende regneark.
Følgende makro kan bruges til at skabe den "kontrol ark."
Sub CreateControlSheet ()
Dim I som heltal
Ved fejl Resume Next 'Slet dette ark, hvis den allerede findes
Sheets ("Control Sheet"). Slet
Ved fejl GoTo 0
Sheets.Add 'Tilsæt WhatToPrint Sheet
ActiveSheet.Name = "Control Sheet"
Range ("A1"). Vælg 'Label kolonnerne
ActiveCell.FormulaR1C1 = "Sheet Name"
Range ("B1"). Vælg
ActiveCell.FormulaR1C1 = "Udskriv?"
Cells.Select
Selection.Columns.AutoFit
For i = 1 til ActiveWorkbook.Sheets.Count
Celler (i + 1, 1) .Value = Sheets (i) .name
Næste
End Sub
Makroen først sletter eventuelle gamle kontrol ark, hvis den findes. Det tilføjer derefter et nyt regneark med navnet Kontrol Sheet, og sætter overskrifter etiketter i kolonne A og B. Derefter vises alle de regneark i projektmappen i kolonne A.
Med skabt styrearket, kan du placere et "X" eller nogle andre værdi (såsom "Y" eller 1) i kolonne B ved siden af hvert regneark, du vil udskrive. Følgende makro derefter undersøger styrearket og udskriver enhver regneark, der har en mark-enhver mark-i cellen i kolonne B.
Sub PrintSelectedSheets ()
Dim i As Integer
i = 2
Gør Indtil Sheets ("Control Sheet"). Cells (i, 1) .Value = ""
Hvis Trim (Sheets ("Control Sheet"). Cells (i, 2) .Value <> "") Derefter
Sheets (Sheets ("Control Sheet"). Cells (i, 1) .Value) .Select
ActiveWindow.SelectedSheets.PrintOut kopier: = 1
End hvis
i = i + 1
Loop
End Sub
En anden metode er at oprette en makro, der kører lige inden udskrivning. (Dette er en af de begivenheder-udskrivning-at Excel giver dig mulighed for at fange.) Følgende makro, føjet til thisWorkbook objekt, køres hver gang du forsøger at udskrive eller vælg udskrift.
Private Sub Workbook_BeforePrint (Annuller Som Boolean)
Dim vShts As Variant
Dim iSvar As Integer
Dim bPreview Som Boolean
Ved fejl GoTo ErrHandler
vShts = Sheets (1) .Range ("A1")
Hvis ikke IsNumeric (vShts) Derefter
GoTo InValidEntry
ElseIf vShts <1 eller vShts> Sheets.Count Så
GoTo InValidEntry
Andet
iSvar = MsgBox (prompt: = "Ønsker du Print Preview", _
Knapper: = vbYesNoCancel, Titel: "preview" =)
Vælg Case iSvar
Case vbYes
bPreview = True
Case vbNo
bPreview = false
Case Else
MsgBox "Annulleret på User anmodning"
GoTo ExitHandler
End Select
Application.EnableEvents = False
Sheets (vShts) .PrintOut Preview: = bPreview
End hvis
ExitHandler:
Application.EnableEvents = True
Cancel = True
Exit Sub
InValidEntry:
MsgBox "'" & Sheets (1) .name & "'! A1" _
& VbCrLf & "skal have et tal mellem" _
& "1 og" & Sheets.Count & vbCrLf
GoTo ExitHandler
ErrHandler:
MsgBox Err.Description
Genoptag ExitHandler
End Sub
Makroen kontrollerer værdien i celle A1 i den første regneark. Det bruger denne værdi til at bestemme hvilke regneark skal udskrives. Med andre ord, en 1 udskriver den første regneark, en 2 udskriver andet en 3 udskriver den tredje, og så videre.
Hvis værdien i A1 er ikke en værdi, eller hvis det er mindre end 1 eller større end antallet af regneark i projektmappen, så brugeren informeres, at værdien er forkert, og makroen forlades.
Hvis man antager, at værdien i A1 er inden for rækkevidde, makroen spurgt, om du ønsker at at bruge Vis udskrift. Afhængig af brugerens svar, makro Udskriver det angivne regneark eller displays Print Eksempel for at regneark.
ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (2372) gælder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finde en version af dette tip til båndet grænseflade Excel (Excel 2007 og nyere) her: Betinget udskrivning.