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
モジュール「シート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