Excel: Automatisches multiplizieren bei Eingabe

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

OK, gehe mal bitte mit ALT+F11 in das VBA Modul deiner Tabelle und gebe da folgendes ein:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")

Application.EnableEvents = True

End Sub

Bitte deine Felder D13 bis D27 als Währung formatieren und wenn du die Zellen (D14-D27) wieder entfernst kommt in diesen felder automatisch eine 0.

Was anderes habe ich gerade nicht, es hoffe es hilft dir weiter.

Rückmeldung wäre schön :-))

Das klappt und ich habe das Ganze noch für Spalte E und F erweitert:

*Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("D13")

If Not Intersect(Target, Range("E14:E27")) Is Nothing Then Target = Target * ActiveSheet.Range("E13")

If Not Intersect(Target, Range("F14:F27")) Is Nothing Then Target = Target * ActiveSheet.Range("F13")

Application.EnableEvents = True

End Sub*

Wenn ich allerdings in die entsprechenden Zellen eine Zahl eingebe und das Ergebnis ausgegeben wird, zerschießt sich die Formatierung "Buchhaltung". Diese wird ja generell eigentlich rechtsbündig ausgegeben, nun erfolgt die Ausgabe undefinierbar - irgendwas zwischen linksbündig und zentriert.. wenn ich dann erneut die Formatierung "Buchhaltung" darüberlege, steht es wie gewohnt rechtsbündig.

Vielen Dank!

0
@sheep92

OK, dann nimm diesen mal. Da wird nach der Eingabe in deinem Bereich automatisch die Formatierung von Zelle D13 (Bitte in Buchhaltung formatieren) wieder in den ganzen Bereich automatisch eingefügt.


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("E14:E27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("F14:F27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
Range("D13").Select
Selection.Copy
Range("D14:F27").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("D13").Select
Application.EnableEvents = True
End Sub
1
@schmiddi1967

Als Makro wunderbar, aber sobald Du ein zweites Mal die Zelle aufmachst, wird der Multiplikationsvorgang wiederholt, und Du kannst nicht nachkontrollieren, wie oft schon!

Sehr "gefährlich"!

1
@Iamiam

Ja, das habe ich auch im Hinterkopf. Nur mir ist nichts anderes zu dieser Frage jetzt eingefallen und wie ich die Frage verstanden habe will er ja auch nur alles einmal eingeben. Hast du da noch was in Petto?

0
@sheep92

So, ich habe das nochmal ein wenig umgebaut. Jetzt kopiert er nach der Eingabe nicht immer erst hin und her sondern ändert nur die auch geänderte Zelle in das Format Buchhaltung.


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D14:D27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("E14:E27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
If Not Intersect(Target, Range("F14:F27")) Is Nothing Then Target = Target * ActiveSheet.Range("d13")
Dim bereich As Range
Dim zelle As Range
Set bereich = Range("D14:F27")
For Each zelle In bereich
zelle.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Next
Application.EnableEvents = True
End Sub
0
@schmiddi1967

"in petto": nicht ausgeführt.

Aber ich hab mal mit sowas wie

Activecell.Formula = Activecell.Formula & "``*``" & Faktoradresse 

einen variablen Faktor an die Formel /den Wert/ angehängt. 

evtl noch "=(" & Teil(Formula) ab 2 & ")*" & Faktoradresse

Hätte jedenfalls den Vorteil, dass man wiederholte Aktionen erkennen kann!

Kannst Du ja aufgreifen, ich häng im Moment an was anderem!

Verdammt noch mal, wie stellt man im neuen Editor jetzt ein * dar?

0
@Iamiam

Wenn du deine Formel meinst, denke ich soweit ich das rausbekommen habe kannst du das nur wenn du deine Formel drin hast die nochmal markierst und dann oben auf Codbeispiel einfügen <> gehst.

Hoffe ich

0
@schmiddi1967

Das funktioniert wunderbar!

Vielen lieben Dank. (:

0

Geh auf Office (oben links), Excel-Optionen, Erweitert.

Dort einen Haken setzen bei "Dezimalkomma automatisch einfügen" und die Anzahl der Stellen auf 1 setzen, OK

Dann wird aus einer eingegebenen 8 eine 0,8. Es wirkt sich allerdings auf die gesamte Tabelle aus.

Ich brauche es leider nicht für die ganze Tabelle.. daher unpraktikabel.

0
@sheep92

eine teuflische Option, wenn man da mal nicht drandenkt!

0

Ich weiß nicht, ob das mit einem Makro geht. Ich an deiner Stelle würde eine neue Spalte E einfügen. In die Zelle E14 gibst du dann ein =D14*0,1.

Dann markierst du die Spalte E und gibst bei Format Währung an mit 2 Stellen hinterm Komma und dem Eurozeichen. Fertig.

Die Formel kannst du dann an der rechten unteren Ecke von Zelle E14 nach unten ziehen. Also bis E27.

Dann kannst du deine Werte in Spalte D eingeben und sie werden in Spalte E automatisch in dein gewünschtes Format mit dem gewünschten Wert eingetragen.


Die Werte sollen in Spalte D stehen! In Spalte E soll das Ganze nämlich mit 0,20 € geschehen.

Es geht um die Erstellung einer Abrechnung, die für den Kunden ausgedruckt werden soll und darauf sind Hilfstabellen nicht gerade praktisch..

0
@sheep92

Dann erstelle die Hilfsspalte (also das, was du momentan in Spalte D schreiben willst) doch in einem neuen Tabellenblatt. Dann sieht man die auch nicht auf dem Ausdruck.

0
@Takezo

Wenn es nicht möglich ist eine leere Zelle dazu zubringen, den neu eingegeben Wert automatisch zu multiplizieren, wird mir leider nichts anderes über bleiben.

0
@sheep92

Wahrscheinlich ist es mit VBA möglich. Damit kenne ich mich aber leider nicht aus. Vielleicht meldet sich ja noch jemand, der das kann.

0
@Takezo

ja, andere Vorgehensweisen sind "gefährlich" (siehe Kommentar zu Schmiddi !

0

Was möchtest Du wissen?