Natisnite več izbir na en list z uporabo VBA v Microsoft Excelu

Anonim

Če na enem listu izberete več obsegov celic in poskušate natisniti izbrane celice, boste
dobite en list za vsako izbrano področje.
Naslednji primer makra natisne vsa izbrana območja na enem listu,
razen če so površine prevelike, da bi jih prilegali v en list.

Sub PrintSelectedCells () 'natisne izbrane celice z gumbom v orodni vrstici ali iz menija Dim aCount As Integer, cCount As Integer, rCount As Integer Dim i As Integer, j As Long, aRange As String Dim rHeight () Kot Single, cWidth ( ) Kot enojni dim AWB kot delovni zvezek, NWB kot delovni zvezek Če je UCase (Ime vrste (ActiveSheet)) "WORKSHEET" Potem Exit Sub 'uporaben samo na delovnih listih aCount = Selection.Areas.Count If aCount = 0 Potem Exit Sub' ni izbranih celic cCount = Selection.Areas (1) .Cells.Count If aCount> 1 Potem je izbranih več področij Application.ScreenUpdating = False Application.StatusBar = "Tiskanje" & aCount & "izbranih področij …" Nastavite AWB = ActiveWorkbook rCount = ActiveSheet.Cells.SpecialCells (xlLastCell) .Row cCount = ActiveSheet.Cells.SpecialCells (xlLastCell) .Column ReDim rHeight (rCount) ReDim cWidth (cCount) For i = 1 To rCount 'poiščite višino vrstice vsake vrstice v izboru rHeight (i) = Vrstice (i) .RowHeight Next i Za i = 1 Za cCount 'poiščite širino stolpca vsakega stolpca v izbiri cWidt h (i) = Stolpci (i). Širina stolpca Naprej i Nastavi NWB = Delovni zvezki. Dodaj 'ustvari nov delovni zvezek Za i = 1 Za rCount' nastavite višine vrstic Vrstice (i). 1 Za cCount "nastavite širine stolpcev Stolpci (i). Širina stolpca = cWidth (i) Naprej i Za i = 1 Za aCount AWB. Aktivirajte aRange = Selection.Areas (i). Naslovite" range range Range (aRange). Copy " kopiranje obsega NWB.Activate With Range (aRange) 'prilepi vrednosti in oblike. PasteSpecial Paste: = xlValues, Operacija: = xlNone, _ SkipBlanks: = False, Transpose: = False .PasteSpecial Paste: = xlFormats, Operacija: = xlNone, _ SkipBlanks: = False, Transpose: = False End With Application.CutCopyMode = False Next i NWB.PrintOut NWB.Close False 'zaprite začasni delovni zvezek, ne da bi shranili Application.StatusBar = False AWB. Če je cCount <10 Potem 'je izbranih manj kot 10 celic Če je MsgBox ("Ali ste prepričani, da želite natisniti" & _ cCount & "izbrane celice?", _ VbQuestion + vbYesNo, "Natisni označene celice") = vbNo Th sl Zapri Ex End Sub If If Selection.PrintOut End If End Sub