Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Subtraktion mittels VBA

Subtraktion mittels VBA
Lorenz
Hallo & schönen Sonntag werte VBAler(innen)
Folgendes Problem (Aufgabenstellung):
In zelle A1 steht eine Zahl zb.: "10"; in C1 steht eine Zahl zb.: "2".
Bei manueller Eingabe von "3" in Zelle E1 soll der MAX(WertInZelle) der Zelle C1 enthaltenen Wert um den von C1 enthaltenen Wert vermindert werden. Anschließend soll um den Rest (in diesem Fall "1") die Zelle "A1" gemindert werden.
vorher: A1=10; C1=2; E1=3; nachher: A1=9; C1=0; E1=3
Es soll aber immer in der selben Reihenfolge subtrahiert werden (zuerst in C1 anschl. in A1)
hat vielleicht einer von Euch ´ne Idee
Gruß Lorenz
Lorenz
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Subtraktion mittels VBA
21.02.2010 13:08:29
Worti
Hallo Lorenz,
ich hab es ehrlich noch nicht verstanden. Meine Interpretation:
Subtrahiere C1 von C1 (oder was ist sonst der ominöse Max(WertInZelle) ?)
Danach subtrahiere die Differenz von E1 und C1 von A1.
Ist das so richtig?
Gruß Worti
AW: Subtraktion mittels VBA
21.02.2010 13:17:51
Lorenz
Hallo Worti!
der ominöse Max(WertInZelle) ist eine Interpretation meinerseits!
mit MAX meinte ich, daß nur der Wert subtrahiert wird, der in Zelle C1 auch tatsächlich vorhanden ist, um keinen Minuswert in C1 zu erhalten.
Grüsse
Lorenz
Anzeige
AW: Subtraktion mittels VBA
21.02.2010 13:17:35
Uwe
Hallo Lorenz,
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$E$1" Then
If Target.Value > Range("C1").Value Then
Range("A1").Value = Range("A1").Value - Target.Value + Range("C1").Value
Range("C1").Value = 0
Else
Range("C1").Value = Range("C1").Value - Target.Value
End If
End If
End Sub
Gruß Uwe
Anzeige
AW: Subtraktion mittels VBA
21.02.2010 13:28:13
Lorenz
Hallo Uwe!
vielen Dank für den Code. Genau nach Wunsch!!!!!!
PS: Ich hatte vorher (bevor der Nachfrage im Forum) natürlich einiges im Sinne des (deines) Makros schon probiert. Abere erst nach Durchsicht deines Codes ist mir aufgefallen wo ich "schief lag". Ich hatte bei Target & bei Range das ".Value" teilweise vergessen.
nochmals vielen Dank & Grüße
Lorenz
Anzeige
...Das kann's nicht gewesen sein,...
21.02.2010 14:21:38
Luc:-?
...Lorenz,
denn …Value ist ohnehin die Default_Eigenschaft von Range (Target ist auch einer)!
Gruß+schöSo, Luc :-?
AW: ...Stimm,aber ...
21.02.2010 14:55:56
Gerd
Hallo Luc:-?
..Target ist noch devoter, je nach Einbindung. :-)
Gruß Gerd
Muss ich das verstehen...? ;-) Gruß owT
21.02.2010 21:37:28
Luc:-?
:-?
Anzeige
AW: Ja, schon
21.02.2010 23:55:14
Gerd
Intersect(Target, Range("X1"))
Gruß Gerd
;
Anzeige
Anzeige

Infobox / Tutorial

Subtraktion mittels VBA in Excel


Schritt-für-Schritt-Anleitung

Um die Subtraktion in Excel mittels VBA umzusetzen, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle das Arbeitsblatt, in dem du die Subtraktion durchführen möchtest.

  3. Füge den folgenden VBA-Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If Target.Address = "$E$1" Then
            If Target.Value > Range("C1").Value Then
                Range("A1").Value = Range("A1").Value - Target.Value + Range("C1").Value
                Range("C1").Value = 0
            Else
                Range("C1").Value = Range("C1").Value - Target.Value
            End If
        End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu deinem Arbeitsblatt.

  5. Gib in Zelle E1 einen Wert ein und beobachte, wie die Subtraktion in den Zellen A1 und C1 automatisch erfolgt.


Häufige Fehler und Lösungen

  • Fehler: Der Code wird nicht ausgeführt, wenn du einen Wert in E1 eingibst.
    Lösung: Stelle sicher, dass du den Code im richtigen Arbeitsblatt-Modul eingefügt hast. Der Code muss im Modul des spezifischen Arbeitsblatts stehen, nicht in einem allgemeinen Modul.

  • Fehler: C1 zeigt einen Minuswert an.
    Lösung: Der Code sorgt dafür, dass C1 nicht negativ wird. Überprüfe, ob der Wert in E1 größer ist als der Wert in C1.


Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, kannst du auch Formeln nutzen:

  1. In Zelle C1 kannst du die folgende Formel verwenden, um die Subtraktion dynamisch zu gestalten:

    =MAX(0; C1 - E1)
  2. In Zelle A1 kannst du dann diese Formel verwenden:

    =A1 - MAX(0; E1 - C1)

Diese Formeln bieten eine einfache Möglichkeit, die Subtraktion in Excel ohne Makros durchzuführen.


Praktische Beispiele

Angenommen, du hast die folgenden Werte:

  • A1 = 10
  • C1 = 2
  • E1 = 3

Wenn du 3 in E1 eingibst, wird:

  • C1 zu 0 (da 2 - 3 negativ wäre)
  • A1 wird auf 9 (10 - 3 + 2 = 9)

Diese Logik kannst du für andere Werte in Excel anpassen, um die Subtraktion flexibel zu gestalten.


Tipps für Profis

  • Achte darauf, die Eingabewerte zu validieren, um sicherzustellen, dass keine ungültigen Werte in E1 eingegeben werden.

  • Nutze die Application.EnableEvents-Eigenschaft, um zu verhindern, dass das Makro ungewollt mehrfach ausgelöst wird.

    Application.EnableEvents = False
    ' Dein Code hier
    Application.EnableEvents = True
  • Experimentiere mit der Worksheet_Change-Ereignisprozedur, um weitere automatische Aktionen zu integrieren.


FAQ: Häufige Fragen

1. Wie kann ich die Subtraktion in Excel ohne VBA umsetzen?
Durch die Nutzung von Formeln wie =MAX(0; C1 - E1) kannst du die Subtraktion auch ohne VBA durchführen.

2. Funktioniert dieser VBA-Code in jeder Excel-Version?
Ja, der Code ist mit den meisten Excel-Versionen kompatibel, die VBA unterstützen. Achte darauf, dass du die richtige Version verwendest, um Komplikationen zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige