|  
                                             
	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
	  
     |