web-dev-qa-db-ja.com

複数のセル間および複数のワークシート間での双方向接続

2つのワークシート間で双方向接続を確立して、一方のシートのエントリを変更するだけで、もう一方のシートを変更できるようにしたいと考えています。

ここで良い説明を見つけました(私はVBAを始めたばかりなので、あまり変更しなくても機能することを非常に嬉しく思います!): 2つのセル間で双方向接続を行うことは可能ですか

あるセルから別のセルでそれを行う方法を示していますが、いくつかの異なるセルでそれを行うにはどうすればよいですか?例えば:

シート1セルA2 =シート2セルB3(およびその逆)
シート1セルA4 =シート2セルB5(およびその逆)
シート1セルA6 =シート2セルB7(およびその逆)

これを適用してデータ検証も含むセルですが、上記のリンクのコードは、とにかく1セットのセルで正常に機能しているように見えました。

編集:
ここの誰かがコードを提案しました(コメントはもうなくなったようですが)特定のセル/シートを追加しましたが、エラーメッセージが表示されたため、正しく入力したかどうかわかりません。

ランタイムエラー1004、メソッド 'オブジェクトの範囲'ワークシートが失敗しました

シート1に特定のセルなどが追加されたコード。

Private Sub Worksheet_change(ByVal Target1 As Range)

If Not Intersect(Target1, Range("F9:F12")) Is Nothing Then  
      Worksheets("sheet 2").Range("F" & Target.Row + 1).Value = Target1.Value  
End If

End Sub`

シート2の場合:

Private Sub Worksheet_change(ByVal Target2 As Range)

If Not Intersect(Target2, Range("F6:F9")) Is Nothing Then  
      Sheets("sheet 1").Range("F" & Target2.Row - 1).Value = Target2.Value  
End If

End Sub

これが問題を引き起こしている可能性がある場合に備えて、詳細に関するもう少し情報。

が欲しいです:
シート2F6と一致するシート1F9
シート2F9と一致するシート1F12

それらはすべて、対応するセルを反映するデータ検証リストを含んでいます。

それらは他のセルとマージされます:
シート1-F9:H10
シート1-F12:H13
シート2-F6:G7
シート2-F9:G10

2
Naan102

モジュール「シート1」に次のコードを入力します。

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo eh
  If Not Intersect(Target, Me.Range("F9,F12")) Is Nothing Then
    Application.EnableEvents = False
    ThisWorkbook.Sheets("sheet 2").Range("F" & Target.Row - 3).Value = Target.Value
eh:
    Application.EnableEvents = True
    If Err <> 0 Then MsgBox Err & " " & Err.Description, , "Error in Worksheet_Change event, sheet 1"
  End If
End Sub

モジュール「シート2」では、これは次のとおりです。

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo eh
  If Not Intersect(Target, Me.Range("F6,F9")) Is Nothing Then
    Application.EnableEvents = False
    ThisWorkbook.Sheets("sheet 1").Range("F" & Target.Row + 3).Value = Target.Value
eh:
    Application.EnableEvents = True
    If Err <> 0 Then MsgBox Err & " " & Err.Description, , "Error in Worksheet_Change event, sheet 2"
  End If
End Sub
3
ZygD