20171114xlVba选定单行记录并打印

Posted Excel VBA 小天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  

以上是关于20171114xlVba选定单行记录并打印的主要内容,如果未能解决你的问题,请参考以下文章

如何从自定义列表视图中获取选定项目并在 toast 消息中打印?

20171114 oradebug

20180429 xlVBA套打单据自适应列宽

20180428 xlVBA自动设置成绩条行高

在单行代码中使用 *(扩展运算符)打印列表列表

学会这10个javascript单行代码,让你的代码更优雅