質問させていただきます。
EXCELにて、"シート1"のA1~C3と"シート2"のD4~F6を
同期化したく考えております。
・いわゆる一方のシートが「読み取り専用」になってしまうリンク貼り付けではなく、シート1、シート2相互が書き換え可能の同期化です。
・A1とD4、B3とE6、のように互いに照合箇所のセル同士を同期反映させたいと考えております。
なお、他の質問を参照したところ、
シート1のA1とシート2のD4の単一セルを同期かする方法は確認できました。(以下参照)
*****************************************************************
シート1のコードは
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("シート2").Range("D4") = Target
End If
End Sub
シート2のコードは
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$4" Then
Worksheets("シート1").Range("A1") = Target
End If
End Sub
***************************************************************
これを参考にVBAの
シート1のコードエディターに
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
Worksheets("シート2").Range("D5") = Target
End If
End Sub
シート2のコードエディターに
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$5" Then
Worksheets("シート2").Range("A2") = Target
End If
End Sub
というように追記していったのですが、エラーとなってしまいます。
お詳しい方がおられましたらお願いいたします。
ひょっとして、ルーチンごとコピーされていますか?
だとすると同名のサブルーチンが存在するためのエラーではないでしょうか。
Private Sub... ~ End Sub
の中身だけを追記していけば良いと思います。
質問者
お礼
ありがとうございます!!
まったくほぼ仰るとおりのことをしておりました。
とても、きちんと確認をせずに質問してしまい、恐縮しきりです。
本来は以下のようにすべきところを、
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("シート2").Range("D4") = Target
End If
If Target.Address = "$A$2" Then
Worksheets("シート2").Range("D5") = Target
End If
End Sub
誤って以下のように記述しておりました。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("シート2").Range("D4") = Target
If Target.Address = "$D$5" Then
Worksheets("シート2").Range("A2") = Target
End If
End If
End Sub
すぐにご指摘くださり、誠に感謝いたします。
本当にありがとうございました。
お礼
ありがとうございます!! まったくほぼ仰るとおりのことをしておりました。 とても、きちんと確認をせずに質問してしまい、恐縮しきりです。 本来は以下のようにすべきところを、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Worksheets("シート2").Range("D4") = Target End If If Target.Address = "$A$2" Then Worksheets("シート2").Range("D5") = Target End If End Sub 誤って以下のように記述しておりました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Worksheets("シート2").Range("D4") = Target If Target.Address = "$D$5" Then Worksheets("シート2").Range("A2") = Target End If End If End Sub すぐにご指摘くださり、誠に感謝いたします。 本当にありがとうございました。