设定范围后的奇数结果相等

时间:2016-07-19 18:15:18

标签: excel vba

这是一个简单的代码,用于将报表中的范围添加到主文件中的运行列表中。代码中没有错误,但由于某些原因,在传输值之后,它会将主文件中整个5,000+项列表中的所有值转换为" N / A"错误,即使它们都只是价值观。我仔细检查了格式和范围大小,一切似乎都很好。有没有人有这样的错误?

        Private Sub CommandButton1_Click()

        Dim wkb As Workbook
        Dim currentRowCount As Integer
        Dim atsStartRow As Integer
        Dim reportRange As Range
        Dim atsRange As Range
        Dim atsName As String
        Dim productionCount As Integer
        Dim endRow As Integer

        atsName = ActiveWorkbook.Name

        For Each wkb In Workbooks
            If Left(wkb.Name, 4) = "Prod" Then
                With wkb.Sheets(1)
                    currentRowCount = .Cells(.Rows.Count, "D").End(xlUp).Row
                    productionCount = (.Cells(2,4).End(xlDown).Row) - 1
                    Set reportRange = .Range(.Cells(2,4), .Cells(currentRowCount, 10))
                End With

                With Workbooks(atsName).Sheets("ProductionSummaryReport")
                    atsStartRow = (.Cells(.Rows.Count, "D").End(xlUp).Row) + 1
                    endRow = (atsStartRow + productionCount) - 1
                    Set atsRange = .Range(.Cells(2,4), .Cells(endRow, 10))
                End With

                atsRange.Value = reportRange.Value
            End If
        Next wkb
        MsgBox "Script finished."
        End Sub

1 个答案:

答案 0 :(得分:0)

在您分配值时仔细检查范围的大小。那么,在atsRange.Value = reportRange.Value行的编辑器中设置断点,然后检查以下值(可能将它们添加为手表?)

  • atsRange.Rows.Count
  • atsRange.Columns.Count
  • reportRange.Rows.Count
  • reportRange.Columns.Count

我怀疑你的尺寸非常不匹配。如果将较小范围的值分配给较大范围的值,则较小范围内的区域之外的任何单元格将设置为“#N / A”。因此,如果atsRange比reportRange大得多,那么你会得到一堆#N / A'值。