Wenn Sie mehrere Zellbereiche auf einem Blatt auswählen und versuchen, ausgewählte Zellen auszudrucken, werden Sie
erhalten Sie ein Blatt für jeden der ausgewählten Bereiche.
Das folgende Beispielmakro druckt alle ausgewählten Bereiche auf einem Blatt,
es sei denn, die Bereiche sind zu groß, um in ein Blatt zu passen.
Sub PrintSelectedCells() ' druckt ausgewählte Zellen, verwenden Sie sie über eine Symbolleistenschaltfläche oder ein Menü Dim aCount As Integer, cCount As Integer, rCount As Integer Dim i As Integer, j As Long, aRange As String Dim rHeight() As Single, cWidth( ) Als Single Dim AWB als Arbeitsmappe, NWB als Arbeitsmappe If UCase(TypeName(ActiveSheet)) "WORKSHEET" Then Exit Sub ' nur in Arbeitsblättern nützlich aCount = Selection.Areas.Count If aCount = 0 Then Exit Sub ' keine Zellen ausgewählt cCount = Selection.Areas(1).Cells.Count If aCount > 1 Then ' mehrere Bereiche ausgewählt Application.ScreenUpdating = False Application.StatusBar = "Drucken " & aCount & " ausgewählte Bereiche… " Set 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 ' finde die Zeilenhöhe jeder Zeile in der Auswahl rHeight(i) = Rows (i).RowHeight Next i For i = 1 To cCount ' finde die Spaltenbreite jeder Spalte in der Auswahl cWidt h(i) = Columns(i).ColumnWidth Next i Set NWB = Workbooks.Add ' eine neue Arbeitsmappe erstellen For i = 1 To rCount ' Zeilenhöhen setzen Rows(i).RowHeight = rHeight(i) Next i For i = 1 To cCount ' Spaltenbreiten einstellen Columns(i).ColumnWidth = cWidth(i) Next i For i = 1 To aCount AWB.Activate aRange = Selection.Areas(i).Address ' die Bereichsadresse Range(aRange).Copy ' Kopieren des Bereichs NWB.Activate With Range(aRange) ' fügt Werte und Formate ein .PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False .PasteSpecial Paste:=xlFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End With Application.CutCopyMode = False Next i NWB.PrintOut NWB.Close False ' temporäre Arbeitsmappe schließen ohne zu speichern Application.StatusBar = False AWB.Activate Set AWB = Nichts Set NWB = Nichts anderes If cCount < 10 Then ' weniger als 10 Zellen ausgewählt If MsgBox("Möchten Sie wirklich drucken " & _ cCount & " selected cells ?", _ vbQuestion + vbYesNo, "Ausgewählte Zellen drucken") = vbNo Th de Exit Sub End If Selection.PrintOut End If End Sub