質問編集履歴

1 2→4

King_of_Flies

King_of_Flies score 299

2018/01/29 14:35  投稿

VBA セルの初期状態を保持して置いて、処理後にその情報をもとにセルデータを元に戻したいです。
現在VBAにて下記のような処理を考えています。
前提 Excelの数式タブ>名前の管理にて、
Range("A1:D3")を"InitDataRange"と命名していることとします。
今回の処理としてテンプレートシートを起点に下記のような処理がループで行われます。
1、テンプレートシートの初期状態を回避
2、テンプレートシートのデータを編集(ここの処理ではいろいろやっていますが、割愛)
3、テンプレートシートを別Bookに出力
4、テンプレートシートを初期状態に戻す
以下、プログラムを見ていただきたく思います。
```VBA
Sub test()
   '初期状態のRangeを回避します。
   Dim initRange As Range
   Set initRange = Range("InitDataRange")
   '2の処理の代わりに内部データをいじっています。出力処理は割愛。
   Range("A1").Value = "a"
   Range("A2").Value = "b"
   Range("D3").Value = "c"
  '初期状態に戻します。
  Range("InitDataRange") = initRange
End Sub
```
ここでできていないのが、最終行のRange~の部分です。
もともとデータが入っているのにもかかわらず、この処理を走らせると最終的に
Range("InitDataRange")の範囲は空になってしまします。
Excelの背景色の設定も含めて初期状態を回避し、
最後に戻すという処理を組み込みたいのですが、
簡単なやり方はありますでしょうか。
よろしくお願いいたします。
  • VBA

    2296 questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る