代码之家  ›  专栏  ›  技术社区  ›  Shivam

Excel VBA-如何使用不同的子例程从工作簿的工作表逐行复制到另一工作簿的工作表

  •  0
  • Shivam  · 技术社区  · 7 年前

    我正在尝试将数据从一张工作簿复制到另一个工作簿,但代码显示错误1004。下面是我在子程序findDuplicates()的For循环中遇到错误的代码

    Option Explicit
    
    Sub GenerateErrorSheet()
       Dim MyBook As Workbook
       Dim newBook As Workbook
       Dim FileNm As String
       Dim rowCount As Integer
    
       Set MyBook = ThisWorkbook
       rowCount = 1
    
       FileNm = ThisWorkbook.Path & "\" & "ErrorSheet-" & Date & ".xls"
       Set newBook = Workbooks.Add
    
       With newBook
    
          Call findDuplicates(Worksheets("pid"), "PID Generator", rowCount,newBook.Worksheets("Sheet1"))
          rowCount = rowCount + 4
          'Call findDuplicates(Worksheets("behavioural"), "Behavioural Measurement")
          'rowCount = rowCount + 4
          'Call findDuplicates(Worksheets("physical"), "Physical Measurement")
          'rowCount = rowCount + 4
          'Call findDuplicates(Worksheets("biochemical"), "Biochemical Measurement")
          'Save new wb with XLS extension
          .SaveAs Filename:=FileNm, FileFormat:=xlNormal, CreateBackup:=False
    
          .Close Savechanges:=False
       End With
       MsgBox "Error Sheet Generated Successfully." & vbNewLine & "Name Of Sheet - ErrorSheet-" & Date & ".xls" & vbNewLine & "Saved Location - " & FileNm
    End Sub
    

    我的findDuplicates子例程在for循环中产生错误

    Sub findDuplicates(ByVal sheet As Worksheet, name As String, ByRef row As Integer, ByVal Sheet2 As Worksheet)
       Dim i As Integer
       Dim numRow As Integer
       numRow = sheet.Range("J2", sheet.Range("J2").End(xlDown)).Rows.Count
    
       With Sheet2
           Range(Cells(row, "A"), Cells(row, "L")).MergeCells = True
           With Cells(row, "A")
               .Font.name = "Bell MT"
               .Font.FontStyle = "Bold Italic"
               .Font.Size = 20
               .Font.Color = RGB(255, 99, 71)
               .Value = "Multiple Forms Found in " & name & " for single household"
           End With
           row = row + 1
       End With
       For i = 1 To numRow
            sheet.Rows("i").Copy Sheet2.Rows("row")
            row = row + 1
       Next i
    End Sub
    

    显示的错误为- Error Image

    错误前的局部值- Locals Image

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alex de Jong    7 年前

    我猜是床单2。行(“行”)。这不应该是第二张吗。而是行(row)?

    编辑:也可编辑图纸。行(“i”)将是表。行(i)可能。