20171114xlVba选定单行记录并打印

Public Sub PrintSelectRow()
    Dim Wb As Workbook
    Dim iSht As Worksheet
    Dim rSht As Worksheet
    Dim pSht As Worksheet
    Dim Rng As Range, ActiveRow As Long
    Dim Arr As Variant, Ar As Variant
    Dim EndRow As Long, EndCol As Long
    Dim RngCol As Long
    Set Wb = Application.ThisWorkbook
    Set iSht = Wb.Worksheets("信息表")
    Set rSht = Wb.Worksheets("打印记录")
    Set pSht = Wb.Worksheets("打印模板")
    
    With iSht
        EndCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
        ActiveRow = Application.ActiveCell.Row
        Set Rng = .Range(.Cells(ActiveRow, 1), .Cells(ActiveRow, EndCol))
        RngCol = EndCol + 1
        If Application.WorksheetFunction.CountA(Rng) = 0 Then
            MsgBox "当前选中行为空白行,请重新选择!", vbInformation, "AuthorQQ 84857038"
            GoTo ErrorExit
        End If
        Ar = Rng.Value
    End With
    
    With rSht
        EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
        If EndRow < 1 Then
            MsgBox "请在打印记录表第一行添加标题!", vbInformation, "AuthorQQ 84857038"
            GoTo ErrorExit
        End If
        
        Set Rng = .Range(.Cells(2, 1), .Cells(EndRow + 1, RngCol))
        Arr = Rng.Value
        For i = UBound(Arr) To LBound(Arr) + 1 Step -1
            For j = LBound(Arr, 2) To UBound(Arr, 2)
                Arr(i, j) = Arr(i - 1, j)
            Next j
        Next i
        
        i = 1
        Arr(1, 1) = EndRow
        For j = LBound(Ar) To UBound(Ar)
            Arr(1, j + 1) = Ar(1, j)
        Next j
        Rng.Value = Arr
        SetBorders .UsedRange
        SetFormat .UsedRange
    End With
    
    pSht.PrintOut
    
ErrorExit:
    Set iSht = Nothing
    Set rSht = Nothing
    Set pSht = Nothing
    Set Rng = Nothing
    Set Wb = Nothing
    
End Sub
Private Sub SetBorders(ByVal Rng As Range)
    With Rng.Borders
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub
Private Sub SetFormat(ByVal Rng As Range)
    With Rng
        With .Font
            .Size = 11
            .Name = "宋体"
        End With
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Columns.AutoFit
    End With
End Sub

  

posted @ 2017-11-14 17:39  wangway  阅读(379)  评论(0编辑  收藏  举报