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"
範囲の代わりにテーブルを使用すると、数式の値がすべて同じ値に変わるのはなぜですか?