所以我试图从其他已关闭的工作簿中动态地将数据插入到Excel表中。
我把一切都运转得很好,除了一件小烦人的东西。
我的公式如下:
='H:\ dev ... [some book name.xlsm] Main'!C1
上面的公式很好。我需要的是将这个完全相同的公式插入到工作表中的多个行的表中。
它应该在一列中看起来像这样:
='H:\ dev ... [some book name.xlsm] Main'!C1
='H:\ dev ... [some book name.xlsm] Main'!C1
='H:\ dev ... [some book name.xlsm] Main'!C1
excel的作用是,它会自动将所有单元格引用更改为增量,如下所示:
='H:\ dev ... [some book name.xlsm] Main'! C1
='H:\ dev ... [some book name.xlsm] Main'! C2
='H:\ dev ... [some book name.xlsm] Main'! C3
我将公式作为字符串插入到数组中,然后使用以下代码将其粘贴到表中:
Set lstObj = Sheets(1).ListObjects(1)
Set rngLstObj = lstObj.Range
With rngLstObj.Offset(1, 0).Resize(rngLstObj.Rows.Count - 1,rngLstObj.Columns.Count)
.Formula = RevList
End With
在上面的代码中,RevList
是一个2维数组。
我尝试将其设置为.Formula
,.Value
,在这两种情况下,excel都会将单元格引用更改为增量。
我试过禁用计算
ThisWorkbook.Sheets(1).EnableCalculation = False
仍然相同。
如何从VBA端停止此行为?
答案 0 :(得分:0)
如果你从
开始='H:\dev...[some book name.xlsm]Main'!$C$1
它会在复制的任何地方强制绝对引用。
增加的美元符号可防止范围发生变化。
答案 1 :(得分:0)
我正在调整目标范围错误,而不是:
With rngLstObj.Offset(1, 0).Resize(rngLstObj.Rows.Count - 1,rngLstObj.Columns.Count)
.Formula = RevList
End With
我应该根据数组维度调整范围:
rngLstObj.Offset(1, 0).Resize(UBound(RevList), _
UBound(Application.Transpose(RevList))) = RevList