Registriert seit: 16.03.2017
Version(en): 2013
16.03.2017, 06:13
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2017, 06:14 von Alberto.)
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
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
16.03.2017, 10:46
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2017, 10:46 von Käpt'n Blaubär.)
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
Registriert seit: 16.03.2017
Version(en): 2013
16.03.2017, 17:22
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2017, 17:22 von Alberto.)
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.
Registriert seit: 29.09.2015
Version(en): 2030,5
16.03.2017, 19:04
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2017, 19:04 von snb.)
Alternative: Code: Sub M_snb() [D23:D191]=[D23:D191+F23:F191] End Sub
Registriert seit: 16.03.2017
Version(en): 2013
16.03.2017, 19:29
(Dieser Beitrag wurde zuletzt bearbeitet: 16.03.2017, 19:30 von Alberto.)
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.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
17.03.2017, 02:18
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2017, 02:18 von Käpt'n Blaubär.)
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.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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.
Registriert seit: 16.03.2017
Version(en): 2013
17.03.2017, 03:38
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2017, 03:43 von Alberto.)
(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
Registriert seit: 13.04.2014
Version(en): 365
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.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
17.03.2017, 11:02
(Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2017, 11:02 von Käpt'n Blaubär.)
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.
|