这是一个简单的代码,用于将报表中的范围添加到主文件中的运行列表中。代码中没有错误,但由于某些原因,在传输值之后,它会将主文件中整个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
答案 0 :(得分:0)
在您分配值时仔细检查范围的大小。那么,在atsRange.Value = reportRange.Value
行的编辑器中设置断点,然后检查以下值(可能将它们添加为手表?)
我怀疑你的尺寸非常不匹配。如果将较小范围的值分配给较大范围的值,则较小范围内的区域之外的任何单元格将设置为“#N / A”。因此,如果atsRange比reportRange大得多,那么你会得到一堆#N / A'值。