Beim ändern einer bestimmten Zelle Makro erneut ausführen?

... komplette Frage anzeigen

3 Antworten

If Not Intersect(Target, Range("J10,S6")) Is Nothing Then
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Ninombre
24.08.2016, 15:28

das ist die einfachere Lösung

0
Kommentar von syrena1992
24.08.2016, 15:34

Wenn ich jetzt j10 ändere, wird das nicht erneut durchgeführt. Gibts dafür auch eine Möglichkeit?

0

das ist eine Änderung der zweiten Zeile:

If Not Intersect(Target, Union(Range("j10"), Range("s6"))) Is Nothing Then

Antwort bewerten Vielen Dank für Deine Bewertung

mein Vorschlag (nochmal anders):


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("j10")) Is Nothing Then MakroABC
Target select
if not intersect(Target, Range("S6")) is nothing then MakroABC
End Sub


Private sub MakroABC() 
Select Case Range("j10").Value
Case "manuell"
Range("s7:u7").ClearContents
Case "Anfang & Ende"
Range("s7").Value = Worksheets("PEPStauchung").Range("d2").Value
End Select
end sub


Die Auslagerung mit Aufruf durch das WS-Ch hat den Vorteil, dass Du so beliebig viele Aktionen fallweise bedingt aufrufen kannst. Dass Du hier zweimal dasselbe Makro aufrufst, ist ja ein Zufall.

Das Target.select ist nur vorsichtshalber für den Fall, dass das aufgerufene Makro die Selection ändert, sollte eigentlich aber auch so überflüssig sein, nur sicherheitshalber. (Target sollte ja unverändert gespeichert bleiben)

Warum allerdings Suboptimierers Lösung nicht geht, ist mir auch schleierhaft, vllt weil das Leerzeichen nach dem Komma vergessen wurde? Range("j10, s6")
Und Ninombres Methode sollte auch gehen, diese Art der Bereichszusammenstellung  ist normalerweise sicher!.

Übrigens habe ich die einzeilige -Alternativlose- Variante des if-then-Befehls verwendet, die braucht kein End if

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?