我最近在尝试使用数组和表格,并在我通过此代码将整个数组转移回表格时发现:
Dim vArr As Variant
Dim SPArr As Variant
Dim lCount As Long
vArr =ThisWorkbook.Worksheets("catalogue").ListObjects(1).DataBodyRange.Value2
For lCount = LBound(vArr) To UBound(vArr)
Select Case vArr(lCount, 1)
Case "G-6R-15L2" 'These are model names
vArr(lCount, 4) = 4.8
Case "G-6SPF-ZB2"
vArr(lCount, 4) = 4.5
Case "U6-6S-15L2"
vArr(lCount, 4) = 6
Case "U-6S-30H2"
vArr(lCount, 4) = 9
Case "G-6SP-12L2"
vArr(lCount, 4) = 4.5
End Select
Next lCount
ThisWorkbook.Worksheets("catalogue").ListObjects(1).DataBodyRange.Value2 = vArr
我在第3列上的有效公式已经消失了:(。我将在此之前说明它的样子:
在引用表格的数据阵列时,有没有明亮的灵魂知道如何排除某些列?像:
vArr(1) =ThisWorkbook.Worksheets("catalogue").ListObjects(1).listcolumns(1).DataBodyRange.Value2
vArr(2)=ThisWorkbook.Worksheets("catalogue").ListObjects(1).listcolumns(2).DataBodyRange.Value2
上述内容在语法中不起作用:(或其他一些建议的最佳实践,即在代码中为两列做公式?
答案 0 :(得分:1)
您必须将“ .Value2 ”替换为“ .Formula ”
与此类似:
Option Explicit
Sub testFormulas()
Dim v As Variant
With Sheet1.ListObjects(1).DataBodyRange
v = .Formula
.Clear
.Formula = v
End With
End Sub
数组现在将包含公式,并且您只更新第4列,因此您的代码应该可以工作,但请确保不要使用数组中的值替换公式