テーブルを使って口座や財布の収支を管理していて、列としては
ナンバー、日付、口座1の増減、口座1の残高、口座2の…、内容、項目
としていて、残高列は単純な数式で計算させているのですが、ある項目(項目列ではなく、増減記載列で)を移動させたり、間に列を増やすと、
それにつられて集計列も変化してしまい、集計列のエラーが出てしまいます。
なので、vbaでエラーを検知したら上のからAutoFillでコピーしてとしたいのですが、
集計列のエラーはどうしたら検知できますか。
IsErrors()
やSpecialCells(xlCellTypeFormulas, xlErrors)
でも検知できませんでした。
なら、いっそのこと変わるたびにとイベント処理させようとしたら
今度はAutoFillが失敗したというエラーが出てしまいます。
vbscript
1Private Sub Worksheet_Change(ByVal Target As Range) 2' With ListObjects(1) 3' .ListColumns(1).DataBodyRange(1).AutoFill excludeHead(.ListColumns(1).DataBodyRange) 4' DoEvents 5' .ListColumns(4).DataBodyRange(1).AutoFill excludeHead(.ListColumns(4).DataBodyRange) 6' DoEvents 7' .ListColumns(6).DataBodyRange(1).AutoFill excludeHead(.ListColumns(6).DataBodyRange) 8' DoEvents 9' .ListColumns(8).DataBodyRange(1).AutoFill excludeHead(.ListColumns(8).DataBodyRange) 10' DoEvents 11' .ListColumns(10).DataBodyRange(1).AutoFill excludeHead(.ListColumns(10).DataBodyRange) 12' DoEvents 13' .ListColumns(12).DataBodyRange(1).AutoFill excludeHead(.ListColumns(12).DataBodyRange) 14' End With 15End Sub 16 17Private Function excludeHead(ByVal rng As Range) As Range 18 With rng 19 Set excludeHead = rng.Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0) 20 End With 21End Function 22 23End Sub
『追記』
mattuwanさん、回答・追記依頼ありがとうございます。
シチュエーションはこうです。
列[A]の1番にある3000はA銀行に3000円預けたという意味です。なので、3000円残高が増えてます.
財布列の2番は-1000円の出費があったことを指します。
ですが、財布の中身がマイナスになってしまうため、その前に財布にお金を入れたことを記入しなきゃと思い、2番の収支を3番に移すと、こうなります。
このように参照セルがずれてしまい、エラーが出ます。
じゃあ、間に列を追加しようとしても同様にエラーが出ます。
これが毎回なるので、vbaで自動的に修正したいのが今回の質問内容です。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー