有没有人遇到过 Excel 似乎在操纵您的公式的情况。我有一张工作表,其中在 A 列中有一个索引值。第一行以任何非零值开头。列中的后续行递增该值。例如
A1 = 1000
A2= A1+ 1
A3= A2 + 1
依此类推/我有另一列 B,其值将是空白或指向 A 列的公式(通常是后续行)例如:
B1.Formula = "=A2"
B2.Formula = "=A3"
B3.Value = ""
B4.value = "=A6"
现在我有一个备份-恢复功能,可以让我将数据/公式写到一个文本文件中,然后在另一个工作簿中读回。对于 A 列和 B 列,我正在检查文本值是否以“=”开头,然后根据是否存在公式来设置该单元格的值或公式。
到目前为止,该功能运行良好。它让我准确还原。
现在,如果我将此数据范围转换为表格并相应地修改代码,则行为很奇怪。我正在使用 ListObject 结构来引用该表。所以对于 B 列,我的恢复代码是:
If Left(soureString) = "=" Then
'This is a formula
Sheets("MySheet").ListObjects(1).ListColumns("Next").DataBodyRange(row).Formula = sourcestring
Else
'This is a value
Sheets("MySheet").ListObjects(1).ListColumns("Next").DataBodyRange(row).Value = soureString
End If
一旦我写完一行,我就会循环到开头并
Dim newRow AS listrow
Set newRow = Sheets("MySheet").Listrows.Add(AlwaysInsert:=False)
row = newRow.Index
但是这次当我运行该过程时。这就是我得到的:
B1.Formula = "=A5"
B2.Formula = "=A5"
B3.Value = ""
B4.value = "=A5"
当我使用表格而不是范围时,为什么我的公式值都变为相同的值?