Hallo Leute, ich bin relativ neu in dem Thema Makros deshalb hier meine Frage:
Ich möchte das Makro welches in Tabelle1 steht nur aktivieren wenn Modul3 aktiviert wird und möchte nicht dass es jederzeit läuft.
Das Makro das ich meine markiert die Selbe Zelle in allen Arbeitsmappen (Tabelle1, Tabelle2....). Wie geht das?
Mit dem Befehl Call kann ich ja nur andere Module ansprechen..
Ich brauche sowas wie "only call this macro if...". Ich kann mein Makro nicht in ein Modul schreiben, da es Arbeitsblatt spezifisch ist.
Hier das Makro:
Sub Worksheet_SelectionChange(ByVal Target As Range)
Set CurrWS = ActiveSheet
For Each WS In ThisWorkbook.Worksheets
WS.Activate
WS.Range(Target.Address).Select
Next
CurrWS.Activate
End Sub
Mein Modul falls es jemand braucht:
Sub Tauschen()
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
End Sub
|