Εκτυπώστε πολλές επιλογές σε ένα φύλλο χρησιμοποιώντας VBA στο Microsoft Excel

Anonim

Εάν επιλέξετε πολλά εύρη κελιών σε ένα φύλλο και προσπαθήσετε να εκτυπώσετε επιλεγμένα κελιά, θα το κάνετε
λάβετε ένα φύλλο για κάθε μία από τις επιλεγμένες περιοχές.
Το ακόλουθο παράδειγμα μακροεντολής θα εκτυπώσει όλες τις επιλεγμένες περιοχές σε ένα φύλλο,
εκτός εάν οι περιοχές είναι πολύ μεγάλες για να χωρέσουν σε ένα φύλλο.

Sub PrintSelectedCells () 'εκτυπώνει επιλεγμένα κελιά, χρήση από ένα κουμπί γραμμής εργαλείων ή ένα μενού 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 ( ) Ως Single Dim AWB As Workbook, NWB As Workbook If UCase (TypeName (ActiveSheet)) "WORKSHEET" then Exit Sub 'use only in worksheets aCount = Selection.Areas.Count If aCount = 0 Then Exit Sub' no cell selected cCount = Selection.Areas (1) .Cells.Count If aCount> 1 Στη συνέχεια «επιλεγμένες πολλαπλές περιοχές Application.ScreenUpdating = False Application.StatusBar =" Εκτύπωση "& aCount &" επιλεγμένες περιοχές … "Ορισμός AWB = ActiveWorkbook rCount = ActiveSheet.Cells.SpecialCells (xlLastCell). Row cCount = ActiveSheet.Cells.SpecialCells (xlLastCell). Colon ReDim rHeight (rCount) ReDim cWidth (cCount) For i = 1 To rCount 'βρείτε το ύψος της σειράς κάθε σειράς στην επιλογή rHeight (i) = Rows (i) .RowHeight Next i Για i = 1 To cCount 'βρείτε το πλάτος της στήλης κάθε στήλης στην επιλογή cWidt h (i) = Στήλες (i). ColonWidth Next i Set NWB = Workbooks.Add 'δημιουργήστε ένα νέο βιβλίο εργασίας Για i = 1 To rCount' ορίστε ύψη γραμμών Σειρές (i) .RowHeight = rHeight (i) Επόμενο i Για i = 1 Για να cCount 'ορίσετε πλάτη στήλης Στήλες (i). ColonWidth = cWidth (i) Επόμενο i Για i = 1 To aCount AWB. Ενεργοποιήστε aRange = Selection.Areas (i). Προσθέστε' το εύρος διευθύνσεων εύρους (aRange). Αντιγραφή ' αντιγραφή του εύρους NWB.Activate With Range (aRange) «επικολλά τις τιμές και τις μορφές .PastteSpecial 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 'κλείστε το προσωρινό βιβλίο εργασίας χωρίς να αποθηκεύσετε το Application.StatusBar = False AWB. Ενεργοποίηση συνόλου AWB = Τίποτα NWB = Τίποτα άλλο Αν cCount <10 Τότε 'επιλέχθηκαν λιγότερα από 10 κελιά Αν MsgBox ("Είστε βέβαιοι ότι θέλετε να εκτυπώσετε" & _ cCount & "επιλεγμένα κελιά;", _ vbQuestion + vbΝαιΌχι, "Εκτύπωση επιλεγμένων κελιών") = vb Όχι Th el Exit Sub End If Selection.PrintOut End If End Sub