[英]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.