- 締切済み
「Excelのセルへの入力内容の転記と元の内容への復帰」
「Excelのセルへの入力内容の転記と元の内容への復帰」 何故それが必要かは別にして、次のようなことがしたい。 ・あるセル(例えばA1)にはある関数(式)が設定されている。 ・いま、セルA1にある値が入力されたとき、 ・その値を別のセル(例えばB1)へ転記(保存)し、 ・セルA1には元の関数に戻す。 これを、VBAで実現するにはどうすれば良いのでしょうか?。お教えください。 changeやselectionchangeイベントなどを使用すると出来そうですが、単純なコーディングではchangeの無限ネスト(無限再帰)となってしまいます。 例えば、次のようなコーディング:セルC1をA1セル選択時の関数保存場所として補助的に使用している。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "A1" Then Range("B1") = Range("A1") Range("A1").Formula = Range("C1").Formula End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "A1" Then Range("C1").Formula = Range("A1").Formula End If End Sub これでは何か発想の転換が必要に思えます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>何故それが必要かは別にして、次のようなことがしたい 回答者に教えてもらうのだから、それぐらい説明して聞くもんだ。 回答者は質問者の小間使いではない。 考えるのが馬鹿らしいと思うことは答えたくないでしょう。 ほかに、この質問の路線以外で、目的が達成できる方式がある場合も無いとは言えない。 本件は考え方に無理がある。 Changeイベントの前段階のBeforeXXの代わりとしてSelection_Changeは使えないと思う。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>Target.Address で得られるアドレスは、絶対アドレスになるので提示されたコードでは動作しません。 マクロによるイベントの重複発生もコードで停止させる事が出来ます。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$A$1" Then Range("B1") = Range("A1") Range("A1").Formula = Range("C1").Formula End If Application.EnableEvents = True End Sub