Ich versuche, den VB-Code aus dieser Frage in Excel 2013 zu verwenden, und es funktioniert nicht. Ich kenne mich mit VB nicht aus und vermisse höchstwahrscheinlich einen einfachen Schritt.
Private Sub Workbook_TwoWayMatch(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "sheet1" Or UCase(Sh.Name) = "sheet2" Then
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1") = Target
Else
Sheets("Sheet1").Range("A1") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub
Unter Verwendung einer neuen Arbeitsmappe mit den Arbeitsblättern Sheet1 und Sheet2 habe ich in Visual Basic Folgendes versucht:
- Einfügen des Codes in das Objekt: ThisWorkbook
- Einfügen des Codes in die Objekte: Sheet1 (Sheet1) und Sheet2 (Sheet2)
- Einfügen des Codes in alle 3 Objekte
- Sicherstellen, dass die Arbeitsmappe als Makro gespeichert ist
- Sicherstellen, dass die Sicherheitseinstellungen der Arbeitsmappe so festgelegt sind, dass der Zugriff auf das VBA-Objektmodell vertrauenswürdig ist und Makros aktiviert sind
Was muss ich tun, damit dieser Code ausgeführt wird?
Als Antwort auf den Vorschlag von Mat's Mug:
Ich habe den Code wie von Ihnen vorgeschlagen in ein Standardmodul eingefügt, die Prozedur in Öffentlich geändert und den Bereich geändert. Es ist mir jedoch immer noch nicht möglich, die Werte aus dem Bereich auf ein Blatt auf das andere zu kopieren. Der Code sieht jetzt so aus:
Public Sub Workbook_TwoWayMatch(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "SHEET1" Or UCase(Sh.Name) = "SHEET2" Then
If Not Application.Intersect(Target, Range("A1:J23")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1:J23") = Target
Else
Sheets("Sheet1").Range("A1:J23") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub