HERBERS Excel-Forum - das Archiv
drei andere Makros bei Änderung einer Zelle ausführen
Jörg Bergmann
Hallo!

Ich habe mir das Makro hier im Forum geklaut und möchte, dass nicht nur ein anderes Makro gestartet wird, sondern drei. Ich bin echt Laie und bekomme es absolut nicht hin.

Für euch sicherlich ein Klacks?

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("F3")) Is Nothing And Target.Count = 1 Then Werte_Soli
End Sub

AW: drei andere Makros bei Änderung einer Zelle ausführen
Jörg Bergmann
und danach gerne noch eine Messagebox, dass die Werte geändert wurden.
AW: drei andere Makros bei Änderung einer Zelle ausführen
Yal
Hallo Jörg,

sodermassen einen Klax, dass wir überrascht sind, dass Du die Lösung einfach gegoogelt hast, anstatt auf unsere Antwort zu warten ;-)

Sieht so aus:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("F3")) Is Nothing And Target.Count = 1 Then
Werte_Soli
zweiteMakro_Starten Sub zweiteMakro_starten
dritteMarko_starten 'usw
MsgBox "Fertig!"
End If
End Sub

Sub zweiteMakro_starten()
'....
End Sub

Erklärung: der If_Statement kann auf eine Zeile
If MeineVariabe = True Then Mache_das

(wobei der "= True" gespart werden kann, denn MeineVariable bereits "True" beinhaltet: die Prüfung, ob "True = True" ergibt "True")
oder auf mehrere. Dann muss einen "End If" vorkommen. Dazwischen kann einen "Else" platziert werden
If MeineVariabe Then 

Mache_das
Else
Mache_was_anderes
End If

VG
Yal
AW: drei andere Makros bei Änderung einer Zelle ausführen
Jörg Bergmann
Hallo!

Dachte, es kann doch nicht so schwer sein, etwas zu finden. ;) Aber hatte erst gegooglet und dann gefragt. Weil ihr seid einfach besser als google. ;) Und danke für die Erläuterung, erwäge tatsächlich VBA zu erlernen.

Klappt super, nun habe ich aber festgestellt, dass die anderen Makros nicht wie gewünscht die Werte einfach von einer Zelle in die andere kopieren, sondern den errechneten Wert in der Ursprungszelle durch den fixen Wert ersetzen:


Sub Werte_Körperschaftssteuer()

Range("K36").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("K38").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

End Sub
AW: drei andere Makros bei Änderung einer Zelle ausführen
Onur
Was hast DU denn erwartet bzw was ist falsch daran?
AW: drei andere Makros bei Änderung einer Zelle ausführen
Jörg Bergmann
Er soll den errechneten Wert aus K36 kopieren und als absoluten Wert in K38 eintragen.

Funktioniert auch, ABER der errechnete Wert wird ebenfalls durch einen absoluten Wert ersetzt, so dass ich jedes Mal die Formel neu eingeben muss.
AW: drei andere Makros bei Änderung einer Zelle ausführen
Onur
Errechneter Wert und absoluter Wert? Was soll das denn sein?
Eine Zelle hat nur einen Wert und der kann entweder errechnet oder manuell eingetragen sein.
AW: drei andere Makros bei Änderung einer Zelle ausführen
Yal
Hallo Jörg,

ja, mit Menschen zu sprechen ist mir auch lieber als mit Maschinen.

Ich gebe es unkommentiert raus. Vielleicht kannst Du selber erkennen, wo der Denklücke war.

Sub Werte_Körperschaftssteuer()

Range("K36").Copy
Range("K38").PasteSpecial Paste:=xlValues
End Sub

"Select" und "Selection" ergeben sich aus der Aufzeichnung. Es wird immer zuerst etwas angeklickt (".. .Select") bevor etwas damit gemacht werden kann ("Selection. ..").
Beim "per Hand" Programmieren kann man diese weglassen.

VG
Yal
AW: drei andere Makros bei Änderung einer Zelle ausführen
Jörg Bergmann
Hatte das von Chat GPT... ;) So funktioniert es nun, danke! Fange gerade an mich für das Erlernen von VBA zu begeistern, habe mir also noch nicht viel Wissen angeeignet, von daher erkenne ich den Denkfehler nicht wirklich, aber ggf. später. ;)