我正在将一个范围读取到一个数组中,循环遍历这个数组来确定一些公式的值,然后将数组返回到工作表。如果我将数组返回到一个与原始范围不同的范围,那么它看起来工作正常,但是如果我将它返回到原来的范围,我只得到第一个公式行,而不是整个范围。我遗漏了什么?
Sub Test2()
Dim vInArrayF As Variant
Dim vInArrayV as Variant
vInArrayF = Range("B13:M55").Formula
vInArrayV = Range("B13:M55").Value
Dim OutRange As Range
Dim R As Long
Dim C As Long
For R = 1 To UBound(vInArrayF, 1) ' First array dimension is rows.
For C = 1 To UBound(vInArrayF, 2) ' Second array dimension is columns.
If Left(vInArrayF(R, C), 3) = "=+S" Then
vInArrayF(R, C) = vInArrayV(R, C)
End If
Next C
Next R
'Set OutRange = Range("AB13:AM55")
Set OutRange = Range("B13:M55")
OutRange.ClearContents
OutRange = vInArrayF结束子对象
发布于 2022-02-17 13:59:07
使用Range.Formula2。
Range.Formula将第一个公式应用于整个column.Range.Formula2,为数组中的每个元素应用每个公式。Sub ReplaceSomeFormulas()
Dim vInArrayF As Variant
Dim vInArrayV As Variant
With Range("B13:M55")
vInArrayF = .Formula2
vInArrayV = .Value
Dim R As Long
Dim C As Long
For R = 1 To UBound(vInArrayF, 1)
For C = 1 To UBound(vInArrayF, 2)
If Left(vInArrayF(R, C), 3) = "=+S" Then
vInArrayF(R, C) = vInArrayV(R, C)
End If
Next C
Next R
.Formula2 = vInArrayF
End With
End Subhttps://stackoverflow.com/questions/71157939
复制相似问题