|
Sub AfdrukkenGeselecteerdeCellen()
' afdrukken van geselecteerde cellen op één vel
Dim TellerSelecties As Integer, TellerKolommen As Integer, TellerRijen As Integer
Dim i As Integer, BereikVoorAfdrukken As String
Dim RijHoogte() As Single, KolomBreedte() As Single
Dim AWB As Workbook, NWB As Workbook
If UCase(TypeName(ActiveSheet)) <> "WORKSHEET" Then Exit Sub
' alleen bruikbaar in werkbladen
TellerSelecties = Selection.Areas.Count
If TellerSelecties = 0 Then Exit Sub ' geen cellen geselecteerd
TellerKolommen = Selection.Areas(1).Cells.Count
If TellerSelecties > 1 Then ' er zijn meer bereiken geselecteerd
Application.ScreenUpdating = False
Application.StatusBar = "Printing " & TellerSelecties & " selected areas..."
Set AWB = ActiveWorkbook
TellerRijen = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
TellerKolommen= ActiveSheet.Cells.SpecialCells(xlLastCell).Column
ReDim RijHoogte(TellerRijen)
ReDim KolomBreedte(TellerKolommen)
For i = 1 To TellerRijen
' bepaal de rijhoogte van de rijen in de selectie
RijHoogte(i) = Rows(i).RowHeight
Next i
For i = 1 To TellerKolommen
' bepaal de kolombreedte van de rijen in de selectie
KolomBreedte(i) = Columns(i).ColumnWidth
Next i
Set NWB = Workbooks.Add ' maak een nieuw werkblad aan
For i = 1 To TellerRijen ' stel de rijhoogtes in
Rows(i).RowHeight = RijHoogte(i)
Next i
For i = 1 To TellerKolommen ' stel de kolombreedtes in
Columns(i).ColumnWidth = KolomBreedte(i)
Next i For i = 1 To TellerSelecties
AWB.Activate
BereikVoorAfdrukken = Selection.Areas(i).Address
' overnemen van de cellen uit het oorspronkelijke werkblad
Range(BereikVoorAfdrukken).Copy ' kopieer het bereik
NWB.Activate
With Range(BereikVoorAfdrukken) ' plak de waarden en opmaak
Else
If TellerKolommen < 2 Then ' er zijn minder dan 2 cellen geselecteerd
If MsgBox("Weet u zeker dat u slechts " & _
TellerKolommen & " cel(len) wilt afdrukken ?", _
vbQuestion + vbYesNo, "Afdrukken") = vbNo Then Exit Sub
End If
Selection.PrintOut
End If
End Sub |