Excel VBA打印输出并定义dynamic打印区域

我实际上是想为一个命令button设置一个基于colomn A的打印区域(如果A是空的,那么这一行是最后一行,当打印区域被设置时,只要打印出横向布局。现在是如下。当我clic它打印,但不更新打印区域,你可以帮我PLZ

Private Sub Imprimer_Click() ActiveSheet.Unprotect Password:="mypass" Dim usedRangeEx As Range Set usedRangeEx = GetUsedRangeIncludingCharts(ActiveSheet) usedRangeEx.Activate Debug.Print usedRangeEx.Address ActiveSheet.Protect Password:="mypass" End Sub Private Function GetUsedRangeIncludingCharts(target As Worksheet) As Range ActiveSheet.Unprotect Password:="mypass" Dim firstRow As Long Dim firstColumn As Integer Dim lastRow As Long Dim lastColumn As Integer Dim oneChart As ChartObject For Each cell In Range("A5:A65") If Not IsEmpty(cell) Then lastRow = cell.Row End If Next With target firstRow = .UsedRange.cells(1).Row firstColumn = .UsedRange.cells(1).Column lastColumn = .UsedRange(.UsedRange.cells.Count).Column Set GetUsedRangeIncludingCharts = .Range(.cells(firstRow, firstColumn), _ .cells(lastRow, lastColumn)) End With ThisWorkbook.ActiveSheet.PrintOut With ActiveSheet.PageSetup .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 End With ActiveSheet.Protect Password:="mypass" End Function 

设置您的打印区域

 Sub Button1_Click() Dim LstRw As Long, PrnG As Range LstRw = Cells(Rows.Count, "A").End(xlUp).Row Set PrnG = Range("A1:C" & LstRw) ' or whatever column you want ActiveSheet.PageSetup.PrintArea = PrnG.Address End Sub