【问题标题】:Adding rows in Excel with VBA code or keep lRow static使用 VBA 代码在 Excel 中添加行或保持行静态
【发布时间】:2017-12-14 19:16:26
【问题描述】:

我有一个用于输入数据的表单。

我需要通过 VBA 代码在 Excel 中“添加”一行并保留我的lRow

我希望将添加行保留在工作表底部,但我有一个引用单元格的公式,如果我添加到它,公式将返回错误数据。

我需要添加一行并保留lrow,或者在将行添加到末尾时更改公式。

我在数据表末尾添加的行是:

lRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1

我的公式行是

.Cells(lRow, 21).Value = "=IF(A2<"" "",A2&TEXT(D2,""mmddyy""),"""")"

当我添加数据时,公式由于其静态而返回错误数据,并且添加的行不再引用A2,而是引用B2 ...等等。

如何在我的代码中添加一行并保持lRow 正常工作,或者如何在我添加新行时使公式正常工作,它索引到下一行而不是静态的?

谢谢

【问题讨论】:

  • 添加新行时为什么会引用 B2?你的意思是一个新的专栏?仅用这两个小sn-ps 代码尚不清楚您要在这里做什么。我也相信,你可能想要.formula 而不是.value 作为单元格范围。
  • 不,我正在添加新行。需要添加行只是因为这是原始工作表的设置方式。就引用 B2 而言,我需要否则 VBA 代码现在是静态的,并且将始终引用不正确的 A2,如果我现在附加它,它需要随着新行的添加而移动,否则我需要插入新行并将旧行向下移动 1 行,但保留 lRow 描述。

标签: excel vba


【解决方案1】:

应该是.Formula 而不是.Value

你可以根据lrow来制作行引用变量

.Cells(lRow, 21).Formula= "=IF(A" & lrow & "<"" "",A" & lrow & "&TEXT(D" & lrow & ",""mmddyy""),"""")"

【讨论】:

  • 谢谢,正是我需要的。你的帮助很大,谢谢一百万
  • @pmk 请点击答案旁边的复选标记标记为正确。
猜你喜欢
  • 2017-05-19
  • 1970-01-01
  • 2015-06-24
  • 2023-03-15
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多