Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

subtrahieren

subtrahieren
05.07.2016 22:38:32
Dani
Hallo
Wer könnte mir da weiter helfen!
Wie lautet der Code im VBA wenn ich subtrahieren möchte
Hier ein kleines Beispiel:
Zelle a1 500
Zelle a2 100 minus
Zelle a3 100 minus
Zelle a4 100 minus
total 200
Besten Dank im Voraus
MF Dani

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Als FmlLösung gäbe es dafür mind 4 Varianten, ...
05.07.2016 23:25:06
Luc:-?
…die auch für eine VBA-Lösung relevant sein könnten, will man einen PgmZyklus (sog Schleife) vermeiden, Dani,
alle mit der Produktsumme, wobei die Lösungen mit WAHL eine singulare (1zellige) MatrixFml erfordern:
=SUMMENPRODUKT(A1:A4;{1;-1;-1;-1})
{=SUMMENPRODUKT(A1:A4;WAHL(ZEILE(Tabelle1!A1:A4);1;-1;-1;-1))}
=SUMMENPRODUKT(A1:A4;1-2*(ZEILE(Tabelle1!A1:A4)>1))
{=SUMMENPRODUKT(A1:A4;WAHL(1+(ZEILE(Tabelle1!A1:A4)=1);-1;1))}
Am einfachsten wäre aber die folgende Fml, die leicht in VBA umzusetzen ist:
=A1-SUMME(A2:A4)
Range("A1") - WorksheetFunction.Sum(Range("A2:A4")
Hierbei ist es grundsätzlich angeraten, die AdressBereiche am PgmAnfang als Constanten zu vereinbaren und dann in Range(…) deren Namen zu verwenden, was evtl spätere Änderungen vereinfacht.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Als FmlLösung gäbe es dafür mind 4 Varianten, ...
06.07.2016 20:55:32
Dani
Hallo Luc
Besten Dank für die prompte Antwort
Ich habe echt mühe dein Code in umzusetzen.
Wo müsse ich deiner meinung denn code schreiben.
Range("A1") - WorksheetFunction.Sum(Range("A2:A4"))
wenn Ergebnis in Zelle A5 sein sollte.
Besten dank
MF Dani

AW: Als FmlLösung gäbe es dafür mind 4 Varianten, ...
06.07.2016 22:39:57
Werner
Hallo Dani,
With Sheets("Tabelle1") 'an deine Bedürfnisse anpassen
.Range("A5") = .Range("A1") - WorksheetFunction.Sum(.Range("A2:A4"))
End With
Gruß Werner

AW: Als FmlLösung gäbe es dafür mind 4 Varianten, ...
06.07.2016 23:33:27
Dani
Hallo Werner
Danke dir 1001 mal hat tiptop Funktioniert.
MF Dani

Anzeige
Na, denn iss ja jut unn nich mehr offen! owT
07.07.2016 00:36:04
Luc:-?
:-?

AW: Na, denn iss ja jut unn nich mehr offen! owT
07.07.2016 00:50:18
Dani
Hallo Luc
Hauch dir Besten Dank für die Hilfe
Vielleicht kannst du mir bei folgendem Problem Helfen
Ich habe eine TextBox, Commandbutto click und eine Zelle nun muss es in Zelle eingefügt werden, jedoch beim neuen Wert wird es da zu gerechnent mein Code ist:
Tabelle1.Range("E21") = TBTAN1.Value + Range("E21").Value
das Problem ist wenn ich ein Zahl mit punkt benütze 5.50 wird dan multipliziert und wenn ich ein Komma benütze rechnet er normal
Frage kann man dies umgehen somit das man mit Punkt und Komma eingeben kann.
Gruss Dani

Anzeige
Was ist der Hintergrund deiner Frage?
07.07.2016 12:32:33
Luc:-?
Soll dein Programm unter verschiedenen lokalen Xl-Einstellungen laufen, Dani,
also in unterschiedlichen nationalen Versionen? Oder soll das nur so wegen der Gewohnheiten bestimmter Nutzer sein, denn es handelt sich ja um (manuelle) Eingaben?!
Was du über (falsche) Multiplikation statt (richtiger) Addition schreibst, muss ich erst noch überprüfen.
Gruß, Luc :-?

AW: Was ist der Hintergrund deiner Frage?
07.07.2016 19:44:04
Dani
Hallo Luc
Darf ich dich (euch) Bitten kurz in meine datei an zuschauen vorallem beim UF Tanken Bitte gib mal eine zahl mit einem punkt 5.50 und mit einem komma 5,50 schau mal in der Zelle e21 das Ergbnis.
https://www.herber.de/bbs/user/106846.xlsm
Ich hoffe sehr das du (Ihr) mich jetzt verstehst.
Wie kann ich dieses Problem lösen.
das ziel ist Textbox Tanken addieren in der Zelle nach jedem click.
Besten Dank im Voraus
Gruss dani

Anzeige
Das liegt daran, dass CDbl nicht mit dem DezPkt …
08.07.2016 03:29:13
Luc:-?
…umgehen kann, Dani,
wenn DezimalKomma eingestellt ist. Die vbFkt Val kann das, akzeptiert aber kein DezKomma. Dazu mal das folgende kleine TestBsp (blau → die Zeile, die du an fraglicher Stelle angepasst einbauen musst):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim TWert As Double
If Not IsEmpty(Target) Then
TWert = IIf(CBool(InStr(Target, ".")), Val(Target), CDbl(Target))
       MsgBox Format(TWert, "0.00")
End If
End Sub
Es wird also nicht multipliziert, sondern einfach nur der DezPunkt weggelassen, was dann durch die Berechnung etwas verschleiert wird.
Gruß, Luc :-?

Anzeige
AW: Das liegt daran, dass CDbl nicht mit dem DezPkt …
08.07.2016 04:56:05
Werner
Hallo Luc,
mich würde mal deine Meinung als Experte interessieren. Ich hab auch mal ein wenig damit rumgespielt und bin auf diese Lösung gekommen. Wahrscheinlich eher nicht die feine Englische Art.
Private Sub CommandButton1_Click()
Dim wert As String
wert = Replace(TBTAN1, ".", ",")
Sheets("Tabelle1").Range("E21") = Sheets("Tabelle1").Range("E21") + wert
TBTAN1 = ""
TBTAN1.SetFocus
End Sub
Gruß Werner

Wert muss natürlich noch CDbl't wdn, …
08.07.2016 16:11:41
Luc:-?
…denn das braucht man in VBA, Werner,
wenn damit weitergerechnet wdn soll. Ansonsten ist es das, was meistens gemacht wird. Dann sollte man aber viell sicherheits­halber Pkt durch Application.International(xlDecimalSeparator) ersetzen und es sollte auch nur 1 Pkt so behandelt wdn, falls der mal eine andere Bedeutung hat.
Gruß, Luc :-?

Anzeige
AW: Wert muss natürlich noch CDbl't wdn, …
08.07.2016 17:50:11
Werner
Hallo Luc,
danke für deine Hinweise.
Gruß Werner

AW: Wert muss natürlich noch CDbl't wdn, …
11.07.2016 11:35:18
Dani
Hallo Luc Hallo Werner
Ersten Besten Danke euch viel mals.
Denn Code vom Werner habe ich über prüft kommt wieder die Fehler meldung 13
also habe ich eine neue UF erstellt und getestet funktioniert perfekt
Frage da ich ein multipage benütze könnte da die Ursache liegen.
Besten Dank noch mals
Gruß Dani

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige