繁体   English   中英

Excel VBA代码进行打印

[英]Excel vba code to print

因此,在大家的帮助下,我制作了一个宏,该宏可以读取单数列并找到最后一个有数据输入的单元格。 然后,我想添加嵌套的if if elseif语句,该语句将根据列出的最后一个单元格告诉它打印x页数。 这是即时通讯使用的代码。 我究竟做错了什么?

    Sub LastRowInOneColumn()
    'Updateby20150305
    Dim xLastRow As Long
    With Application.ActiveSheet
        xLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    End With
    MsgBox xLastRow

    If xLastRow = "22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,30,40,41,42,43,44,45" Then

    Application.Dialogs(xlDialogPrinterSetup).Show
    'Worksheets("Sheet1").PrintOut From:=1, To:=1, Preview:=True

    End If

End Sub

如果我理解正确,请尝试此

Sub LastRowInOneColumn()
'Updateby20150305
Dim xLastRow As Long

With Application.ActiveSheet
    xLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With

MsgBox xLastRow

If xLastRow >= 22 And xLastRow <= 45 Then
    Application.Dialogs(xlDialogPrinterSetup).Show
    'Worksheets("Sheet1").PrintOut From:=1, To:=1, Preview:=True
End If

End Sub

在这种情况下,我更喜欢Select Case 我还建议明确说明要考虑的工作表,而不是ActiveSheet 如果有多个工作表,则可以将工作表的参数传递给该子表,然后从另一个子表中调用。

Option Explicit

Sub LastRowInOneColumn()

    Dim MySheet As Worksheet
    Set MySheet = Worksheets("Sheet1")

    With MySheet

        Dim LastRow As Long
        LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row

        Select Case True

            Case LastRow > 21 And LastRow < 46

                Application.Dialogs(xlDialogPrinterSetup).Show
                'Worksheets("Sheet1").PrintOut From:=1, To:=1, Preview:=True

        End Select

    End With

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM