Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: BowervanLichtenstein am August 27, 2016, 21:39:07 Nachmittag
-
Sehr geehrte Office Community,
ich möchte, dass in Excel beim Verändern vom Wert in Feld 1 oder Feld 2 in Feld 3 sein Wert = seinem Wert + dem neu eingegebene Wert von Feld 1 oder Feld 2 berechnet wird.
Wenn Feld 3 z.B. B1 ist, kommt eine Fehelermeldung wenn ich sage =B1 + B2.
In anderen Foren hieß es, dass man das nur mit einem Makro realisieren kann. Also habe ich folgendes Makro geschrieben:
Dim Wert As Double
Dim Gehalt As Double
Dim Bafög As Double
Sub Worksheet_Change(ByVal Target As Excel.Range)
Wert = Worksheets("Tabelle1").Cells(3, 9).Value
If Target.Address = "$B$3" Then
Gehalt = Worksheets("Tabelle1").Cells(3, 2).Value
Wert = Wert + Gehalt
Cells(3, 9).Value = Wert
End If
If Target.Address = "$B$5" Then
Bafög = Worksheets("Tabelle1").Cells(5, 2).Value
Wert = Wert + Bafög
Cells(3, 9).Value = Wert
End If
End Sub
-
-
-
-
Leider wird mir dieses nicht in der Makroliste angezeit und ich verstehe nicht warum :-\.
Wenn ich über die Sub Guthaben() z.B. Sub blabal() End Sub schreibe so wird es in der Makroliste mit blabla angezeigt.
Aber Warum wird denn das Makro so nicht angezeigt??
Ich freue mich auf hilfreiche Antworten
Lg
-
Hallo,
der Grund ist, dass in der Makroliste nur Prozeduren angezeigt werden, die kein Argument beinhalten,
das an das Makro übergeben werden muss - in diesem Fall ByVal Target As Excel.Range. Denn woher
soll die Makroliste wissen, was zu übergeben ist?
Nebenbei, Worksheet_Change ist eigentlich der Name eines Ereignisses, welches dann ausgelöst wird,
wenn eine Zelle in einer Tabelle geändert wird, also der Aufruf erfolgt automatisch. Das geht aber nur,
wenn Worksheet_Change im Codemodul zu der Tabelle steht - nicht in einem Standardmodul.
Falls Du lieber den Aufruf manuell hättest, sollest Du einen anderen Prozedurnamen wählen, z.B. wie
Du schon genannt hattest: Sub Gehalt.
Möchtest Du den Automatismus haben, dann lege Worksheet_Change ... in das Codemodul der
Tabelle ab.
Gruß
-
Vielen Dank für die Antwort