我根据Excel表单中的范围创建了两个数组: AdjustedProductionValues, ProductionTargetValues
我正在创建第三个数组来保存新值: FinalProductionValues
我想循环调整AdjustedProductionValues;如果值为0,我想将ProductionTargetValues的值赋给新的数组FinalProductionValues。否则,我想将AdjustedProductionValues的值赋给FinalProductionValues。
我不断收到下标超出范围的错误。我以不同的方式尝试过ReDim但没有成功。我在If语句中得到错误。
我该如何解决这个问题?
Sub TEST()
Dim AdjustedProductionValues() As Variant
Dim ProductionTargetValues() As Variant
Dim FinalProductionValues() As Variant
ReDim FinalProductionValues(1 To 1) As Variant
Dim i As Integer
'Assigning Adjusted Production and Production Target numbers into lists
Worksheets("SUMMARY").Activate
AdjustedProductionValues = Range(Range("E35"), Range("E35").End(xlToRight))
ProductionTargetValues = Range(Range("E34"), Range("E34").End(xlToRight))
'checking each Adjusted Production value
'if it's 0 then assigns the Adjusted Production value to a new list
'if it's not 0 it assignes the Production Target to the new list
For i = 0 To UBound(AdjustedProductionValues)
ReDim Preserve FinalProductionValues(1 To UBound(FinalProductionValues) + 1) As Variant
If AdjustedProductionValues(i) = 0 Then
FinalProductionValues(UBound(FinalProductionValues)) = ProductionTargetValues(i)
Else
FinalProductionValues(UBound(FinalProductionValues)) = AdjustedProductionValues(i)
End If
Next i
End Sub
更新W / FIX 我修改了我的代码:
For i = 1 To UBound(AdjustedProductionValues, 2)
ReDim Preserve FinalProductionValues(1 To UBound(FinalProductionValues) + 1) As Variant
If AdjustedProductionValues(1, i) = 0 Then
FinalProductionValues(UBound(FinalProductionValues)) = ProductionTargetValues(1, i)
Else
FinalProductionValues(UBound(FinalProductionValues)) = AdjustedProductionValues(1, i)
End If
Next i
我使用以下内容检查了我的工作:
Worksheets("Sheet2").Activate
Dim NumRows As Long
Dim NumCols As Long
NumRows = 1
NumCols = UBound(FinalProductionValues, 1) - LBound(FinalProductionValues, 1) + 1
Range("A1").Resize(NumRows, NumCols).Value = FinalProductionValues
帮助检查我的代码