VBA - Zwei Spalten addieren
#1
Hallo zusammen,

wie kann ich bitte in Excel mit VBA zwei Spalten addieren?

Spalte1---> Bereich ("F23:F191")
Spalte2---> Bereich ("D23: D191")

Die Summe von den beiden Spalten soll im Bereich ("D23: D191") angezeigt werden.

Bitte nicht hauen... ich fange gerade erst an mit VBA in Excel.
Ich weiss, das Problem lässt sich mit einer Formel einfach lösen, nur möchte ich dann mit VBA noch weiter machen.
Ich danke Ihnen für Ihre Hilfe.
Gruß
Alberto
Top
#2
Hallo Alberto,

so, wie ich das verstanden habe willst Du in den Zeilen von 23 bis 191 die Summe aus den Werten
der Spalte D und der Spalte F bilden und diese Summe in Spalte D schreiben und dadurch den
ursprünglichen Wert in der Spalte D überschreiben.

Eine Möglichkeit wäre dann
Zitat:'wie kann ich bitte in Excel mit VBA zwei Spalten addieren?
'Spalte1---> Bereich ("F23:F191")
'Spalte2---> Bereich ("D23: D191")
'Die Summe von den beiden Spalten soll im Bereich ("D23: D191") angezeigt werden.

der Code gehört in ein Allgemeines Modul

Sub Summenbildung()
Dim varI As Long
    For varI = 23 To 191
        Cells(varI, 4).Value = Cells(varI, 4).Value + Cells(varI, 6).Value
    Next varI
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • Alberto
Top
#3
Hallo Herr Blaubär,

ich Danke Ihnen für die schnelle Hilfe.
sie sind wirklich ein Kapitän in Excel-VBA
Das ist genau was ich mir vorgestellt habe, aber ich hätte bitte noch eine Frage, wenn es Ihnen nichts ausmacht.
Ich möchte, dass der Code jedesmal ausgeführt wird wenn neue Zahlen im Bereich ("F23:F191") eingegeben werden ansonsten soll ein MsgBox angezeigt wird dass der Code schon ausgeführt wurde.
Danke im Voraus.
Top
#4
Alternative:


Code:
Sub M_snb()
   [D23:D191]=[D23:D191+F23:F191]
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#5
Hallo SNB,

ich danke Ihnen für die alternative Lösung aber meine zweite Frage wurde noch nicht beantwortet.

Frage:

Ich möchte bitte , dass der Code jedesmal ausgeführt wird wenn neue Zahlen im Bereich ("F23:F191") eingegeben werden ansonsten soll ein MsgBox angezeigt wird dass der Code schon ausgeführt wurde.
Danke im Voraus.
Top
#6
Hallo Alberto,

es gibt eben noch ein Leben außerhalb von Excel. Drum melde ich mich jetzt erst wieder.

Zitat:Ich möchte, dass der Code jedesmal ausgeführt wird wenn neue Zahlen im Bereich ("F23:F191") eingegeben werden
ansonsten soll ein MsgBox angezeigt wird dass der Code schon ausgeführt wurde.

Habe ich Dich da richtig verstanden, daß in dem Fall, daß kein neuer Wert eingetragen wird, eine MsgBox erscheinen soll?
Also quasi in dem Moment, wo Du in eine Zelle des vorgegebenen Bereiches klickst, die Box erscheinen soll?
Dann sehe ich da aber keinen besonderen sittlichen Nährwert in der Geschichte. Das bremst doch nur aus.

Morgen Vormittag habe ich erst mal einen Termin. Wenn ich dann wieder zu Hause bin, am frühen Nachmittag oder so,
hoffe ich von Dir eine Antwort dazu bekommen zu haben.

Also, wenn ich das richtig verstanden habe, dann ist dieses Vorhaben in meinen Augen absoluter Blödsinn.
Wenn Du was anderes planst, dann solltest Du genauer erklären, was wann wie und wo passieren soll.

Im Übrigen ist in den Foren allgemein üblich, sich mit Du anzureden. Das solltest auch Du tun  :05:

@ snb:
Dein Code ist mal wieder absolut überwältigend. Ich bin begeistert.
Nur stellt sich mir die Frage, ob das die richtige Form ist, jemanden VBA nahezubringen zu wollen.
Also, als ich Anfänger war und mir wäre so ein Code untergekommen, dann hätte ich Copy&Paste genutzt, mich gefreut,
daß das Ding rennt, einen kilometerlangen Bannkreis um mich herum gezogen und VBA nicht mehr an mich herangelassen.
Nichts für Ungut, aber so wäre es gekommen.
Top
#7
Hallo Alberto,

mir ist etwas eingefallen, vielleicht gefällt Dir das


Nach der letzten durchgeführten Buchung gibt es eine farblich unterlegte Zelle oder Zeile,
in der sich die Nachricht befindet, daß alle Buchungen gemacht wurden.

Das ist zwar immer noch wenig sinnvoll, aber dann muß zumindest nicht jedes Mal die
MsgBox weggeklickt werden. Mich würde das in den Wahnsinn treiben.
Top
#8
(17.03.2017, 02:18)Käpt schrieb: Hallo Alberto,

es gibt eben noch ein Leben außerhalb von Excel. Drum melde ich mich jetzt erst wieder.


Habe ich Dich da richtig verstanden, daß in dem Fall, daß kein neuer Wert eingetragen wird, eine MsgBox erscheinen soll?
Also quasi in dem Moment, wo Du in eine Zelle des vorgegebenen Bereiches klickst, die Box erscheinen soll?
Dann sehe ich da aber keinen besonderen sittlichen Nährwert in der Geschichte. Das bremst doch nur aus.

Morgen Vormittag habe ich erst mal einen Termin. Wenn ich dann wieder zu Hause bin, am frühen Nachmittag oder so,
hoffe ich von Dir eine Antwort dazu bekommen zu haben.

Also, wenn ich das richtig verstanden habe, dann ist dieses Vorhaben in meinen Augen absoluter Blödsinn.
Wenn Du was anderes planst, dann solltest Du genauer erklären, was wann wie und wo passieren soll.

Im Übrigen ist in den Foren allgemein üblich, sich mit Du anzureden. Das solltest auch Du tun  :05:

@ snb:
Dein Code ist mal wieder absolut überwältigend. Ich bin begeistert.
Nur stellt sich mir die Frage, ob das die richtige Form ist, jemanden VBA nahezubringen zu wollen.
Also, als ich Anfänger war und mir wäre so ein Code untergekommen, dann hätte ich Copy&Paste genutzt, mich gefreut,
daß das Ding rennt, einen kilometerlangen Bannkreis um mich herum gezogen und VBA nicht mehr an mich herangelassen.
Nichts für Ungut, aber so wäre es gekommen.

Hallo Herr Blaubär,

Danke für Deine Rückmeldung.

Ich wollte folgendes:


wenn ich den Code zum ersten Mal ausführe, dann wird die Summe der beiden Spalten[D23: D191+F23: F191] im Range [D23: D191] eigetragen, aber wenn ich den Code nochmal zum zweiten Mal ausführe dann bekomme ich die gleiche Summe, in dem Fall wenn keine neuen Werte im Range [F23:F191] manuell von mir eingegeben wurden. Und das wollte ich vermeiden.

Nach der Ausführung des Codes zum zweiten Mal, muss er zuerst den Bereich [F23: F191] überprüfen ob neue Werte eingegeben wurden. (mindestens ein neuer Wert)
-Wenn ja, dann soll der Code die Summe der Spalten bilden.
-Wenn nicht, dann soll eine MsgBox erscheinen "Nach der Überprüfung wurde keine neuen Werte festgestellt"

ich hoffe, dass meine Antwort befriedigend ist  Smile
Top
#9
Hallo,

abgesehen davon, dass das mit einer Formel wohl einfacher und schneller wäre (eine Formel reagiert ja sofort auf Änderungen!):




Code:
Private sub worksheet_Change(byval target as range)
  If not intersect(raZiel, Target) is nothing then
      [D23:D191]=[D23:D191+F23:F191]     
  end if
end sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#10
Hallo Alberto,

Zitat:wenn ich den Code zum ersten Mal ausführe, dann wird die Summe der beiden Spalten[D23: D191+F23: F191] im Range [D23: D191] eigetragen, aber wenn ich den Code nochmal zum zweiten Mal ausführe dann bekomme ich die gleiche Summe, in dem Fall wenn keine neuen Werte im Range [F23:F191] manuell von mir eingegeben wurden. Und das wollte ich vermeiden.

dann habe ich Dich bisher vollkommen falsch verstanden und hätte Dir auch die falsche Lösung geliefert, fürchte ich.

Was ich nun verstanden habe, soll der Code gar nicht automatisch und nach jeder Zellveränderung durchlaufen werden, sondern erst
nach einer Sammlung ... sozusagen Durchlaufen auf Knopfdruck? Dann würde auch die Box natürlich Sinn machen.

So, aber nun ab, zu meinem Termin.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste