Hallo,
UweD hat dir die Antwort bereits geschrieben. Allerdings dürfte das Makro in Tabelle1 dann auch ausgelöst werden, wenn du das Tag in eine Zelle schreibst. Ich würde hier eher über eine globale Variable gehen. Ohne getestet zu haben könnte das Ganze dann etwa so aussehen:
Code im Modul3:
Public Modulstart As Boolean
Sub Tauschen()
Modulstart = True
Worksheets("Einsatzplan").Select
Dim s(1 To 4) As Variant
With Selection
If .Areas.Count = 2 And .Cells.Count = 2 Then
s(1) = .Areas(1).Cells(1, 1).Value
s(2) = .Areas(1).Range(Cells(1, 1), Cells(1, 1).Offset(0, 50)).Value
s(3) = .Areas(2).Cells(1, 1).Value
s(4) = .Areas(2).Range(Cells(1, 1), Cells(1.1).Offset(0, 50)).Value
'tauschen
.Areas(1).Cells(1, 1).Value = s(3)
.Areas(1).Range(Cells(1, 1), Cells(1, 1).Offset(0, 3)).Value = s(4)
.Areas(2).Cells(1, 1).Value = s(1)
.Areas(2).Range(Cells(1, 1), Cells(1, 1).Offset(0, 3)).Value = s(2)
End If
End With
Worksheets("Urlaubsplan").Select
Dim r(5 To 8) As Variant
With Selection
If .Areas.Count = 2 And .Cells.Count = 2 Then
r(5) = .Areas(1).Cells(1, 1).Value
r(6) = .Areas(1).Range(Cells(1, 1), Cells(1, 1).Offset(0, 50)).Value
r(7) = .Areas(2).Cells(1, 1).Value
r(8) = .Areas(2).Range(Cells(1, 1), Cells(1.1).Offset(0, 3)).Value
'tauschen
.Areas(1).Cells(1, 1).Value = r(7)
.Areas(1).Range(Cells(1, 1), Cells(1, 1).Offset(0, 50)).Value = r(8)
.Areas(2).Cells(1, 1).Value = r(5)
.Areas(2).Range(Cells(1, 1), Cells(1, 1).Offset(0, 50)).Value = r(6)
End If
End With
Modulstart = False
End Sub
Code in Tabelle1
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Modulstart = True Then
Set CurrWS = ActiveSheet
For Each WS In ThisWorkbook.Worksheets
WS.Activate
WS.Range(Target.Address).Select
Next
CurrWS.Activate
End If
End Sub
|