【问题标题】:Print Macro - Run-time error 1004. Method 'Range' of object '_Worksheet' failed打印宏 - 运行时错误 1004。对象“_Worksheet”的方法“范围”失败
【发布时间】:2015-04-10 21:51:02
【问题描述】:

我想要做的是,如果 A* 列中有“1”,那么我希望宏将行从 B*:L* 列复制到新工作表,然后打印工作表已经经历了完整的范围。

如果 A 列中没有“1”,那么我只希望它继续到下一行进行检查。需要帮助吗?

Sub PrintFlaggedRows()
  Const STARTSEARCHROW As Long = 1
  Const STARTPRINTROW As Long = 2
  Const ENDSEARCHROW As Long = 250
  Const STARTCOLUMN As Integer = 1 ' Column A
  Const ENDCOLUMN As Integer = 1   ' Column A
  Dim oldAlerts As Boolean
  Dim oldUpdates As Boolean
  Dim destSheet As Worksheet
  Dim srcSheet As Worksheet
  Dim destRange As Range
  Dim i As Long


  oldUpdates = Application.ScreenUpdating
  Application.ScreenUpdating = False
  oldAlerts = Application.DisplayAlerts
  Application.DisplayAlerts = False

  Set srcSheet = Sheets("Estimating & Building Quote")
  Set destSheet = Worksheets.Add
  Set destRange = destSheet.Cells(STARTPRINTROW, 1)

  For i = STARTSEARCHROW To ENDSEARCHROW

        If (srcSheet.Cells(i, 1) = 1) _
              Or (srcSheet.Cells(i, 1) = "1") Then

              srcSheet.Range(Cells(i, STARTCOLUMN), Cells(i, ENDCOLUMN)).Copy
              dstRange.PasteSpecial xlPasteValues
              dstRange.PasteSpecial xlPasteFormats

              Set dstRange = dstRange.Offset(0, 1)
        End If
  Next i

  destSheet.Columns.AutoFit
  destSheet.PrintOut

  destSheet.Delete

  Application.DisplayAlerts = oldAlerts
  Application.ScreenUpdating = oldUpdates

结束子

【问题讨论】:

    标签: excel vba


    【解决方案1】:
    srcSheet.Range(Cells(i, STARTCOLUMN), Cells(i, ENDCOLUMN)).Copy
    

    这里不合格的Cells() 总是指ActiveSheet,这可能不是你想要的。

    试试:

    With srcSheet
        .Range(.Cells(i, STARTCOLUMN), .Cells(i, ENDCOLUMN)).Copy
    End With
    

    【讨论】:

    • 之后我得到一个运行时错误“424”:需要对象。当我调试行时,dstRange.PasteSpecial xlPasteValues 突出显示。
    • 如果您将Option Explicit 添加到模块的顶部,您将看到您已声明并分配了一个变量destRange,但导致错误的行正在尝试使用dstRange。始终使用Option Explicit 可以避免这些类型的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多