将数据添加到表中而不自动增量

时间:2015-04-14 16:32:26

标签: excel vba excel-vba

所以我试图从其他已关闭的工作簿中动态地将数据插入到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端停止此行为?

2 个答案:

答案 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