Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
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

Einzelsummen per MsgBox

Einzelsummen per MsgBox
12.11.2019 10:41:56
Kerstin
Hallo Excel-Cracks!
Ich habe folgende Idee, schaffe es aber nicht, sie umzusetzen:
Ich möchte mir in einer Tabelle, die ständig aktualisiert wird, per MsgBox die Summe aus Spalte "S" von den Zeilen, die ich markiere, fortlaufend anzeigen lassen. D.h. ich markiere z.B. Zeile 5 und 6, dann Soll die Summe aus S5:S6 angezeigt werden. Dann markiere ich weiter (mit gedrückter Maustaste) Zeile 7, dann soll die Summe aus S5:S7 gezeigt werden, weiter mit Zeile 8 usw. bis eine bestimmte (variable Summe) erreicht ist. Der Bereich, den ich markieren möchte, ist zusammenhängend und variabel.
Zum Verständnis: Ich arbeite nebenbei ehrenamtlich in unserer Dorfbücherei und bin für den Einkauf der Bücher zuständig. Diese werden durch Spenden finanziert, die leider immer unterschiedlich hoch ausfallen.
In meine Liste trage ich ständig Bücher ein, die ich für lesenswert halte und die, wenn genügend Geld da ist, gekauft werden. Damit ich weiß, wieviel bzw. welche Bücher ich für das mir vorliegende Budget kaufen kann (ohne ständig nachzurechnen), kam mir o.g. Idee.
Ich möchte gerne bei der "Bereichsmarkierung" bleiben, weil dieser Bereich dann in meine "Einkaufsliste" kopiert wird. Den Code hierfür habe ich schon.
Hier ist der Code für die Summe in der MsgBox, allerdings für den gesamten markierten Bereich. Wie gesagt, ich hätte es gerne "Step by Step". Ist das möglich?
Sub Test()
Dim StartZeile As Long
Dim endzeile As Long
Dim rng As Range
StartZeile = Selection.Row
endzeile = Selection.Row + Selection.Rows.Count - 1
Dim bSumme As Double
Set rng = ActiveSheet.Range("S" & StartZeile & ":S" & endzeile)
bSumme = Round(Application.WorksheetFunction.Sum(rng), 2)
MsgBox "Summe: " & bSumme
End Sub
Viel Spaß beim tüfteln, ich hoffe, daß jemand eine Idee hat.
Viele Grüße
Kerstin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einzelsummen per MsgBox
12.11.2019 11:34:30
volti
Hallo Kerstin,
hier mal eine erste Idee, wie Du das machen könntest:
Nach jeder Markierungsänderung in Splate "S" wird die Summe berechnet und angezeigt (sofern es eine Summe gibt)
Allerdings müsstest Du die MsgBox immer wieder wegklicken und dann die weitere Zelle anklicken, da beim Anzeigen der MsgBox der Code nicht weiterläuft.
PS: Der Code muss in das Objectblatt des gewünschten Tabellenblattes und nicht in ein Modul.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim Zelle As Object, Summe As Currency
 For Each Zelle In Selection
   If Zelle.Column = 19 Then Summe = Summe + Zelle.Value    'Aufaddieren
 Next Zelle
 If Summe <> 0 And Selection.Count > 0 Then
    MsgBox "Summe: " & CStr(Summe), vbOKOnly Or vbInformation, "Summe zeigen"
 End If
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Einzelsummen per MsgBox
12.11.2019 11:49:13
volti
Hallo Kerstin,
hier noch eine Idee, bei der die MsgBox nach einer Sekunde selbständig schließt, aber vorher auch wegklickbar ist:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim Zelle As Object, Summe As Currency
 For Each Zelle In Selection
   If Zelle.Column = 19 Then Summe = Summe + Zelle.Value    'Aufaddieren
 Next Zelle
 If Summe <> 0 And Selection.Count > 0 Then
   CreateObject("WScript.Shell").Popup "Summe: " & CStr(Summe), 1, "Summe zeigen", vbOKOnly Or vbInformation
 End If
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Einzelsummen per MsgBox
12.11.2019 11:51:13
Tino
Hallo,
ich würde es nicht mit einer Messagebox machen die behindert beim weiterarbeiten.
Hier mal eine Variante mit der Statuszeile.
Code kommt in das entsprechende Tabellenblatt.
Das Ergebnis findest du in der Regel unten links in der Statuszeile.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Range("S:S"), Target)
With Application
If Not rng Is Nothing Then
.StatusBar = "Summe " & rng.Address(0, 0) & " = " & _
.WorksheetFunction.Round(.WorksheetFunction.Sum(rng), 2)
Else
.StatusBar = False
End If
End With
End Sub
Gruß Tino
Anzeige
AW: Einzelsummen per MsgBox
12.11.2019 13:00:22
Kerstin
Hey, super schnelle Antworten!
Probiere ich heute Abend mal aus.
Muß jetzt erst zur Bücherei...
Liebe Grüße und schon mal Dankeeee!!!
Kerstin
AW: Einzelsummen per MsgBox
12.11.2019 20:52:34
Kerstin
Hi, da bin ich wieder und habe ausprobiert.
Code 1 und 3 klappen, wobei Tino natürlich Recht hat, die MsgBox ewig wegzublicken ist nervig.
Jetzt kommt mein "ABER": gibt es nicht eine Möglichkeit, mir die Summe Zeile für Zeile anzuzeigen? Also wenn ich mit gedrückter Maustaste Zeile 5 markiere, sollte in der Statuszeile nur der Wert aus "S5" stehen. Dann markiere ich mit gedrückter Maustaste weiter, Wert aus "S5:S6", weiter, Wert aus "S5:S7", weiter, Wert aus "S5:S8" usw. Ich beende die Markierung erst, wenn der Wert der Spende erreicht ist...
Viele Grüße
Kerstin
Anzeige
Verstehe nicht! oT.
12.11.2019 21:55:14
Tino
AW: Verstehe nicht! oT.
13.11.2019 10:56:01
volti
Hi Tino,
ich verstehe es so:
Kerstin möchte mit gedrückter Maustaste ihre Selektion verändern und gleich immer die neue Summe sehen, ohne die Taste loszulassen.
Der Selection-Change-Event wird aber nur ausgelöst, wenn man die Maustaste wieder loslässt (MouseUp).
M.E. lässt sich dieser Wunsch nur mit Timer lösen...
viele Grüße
KH
Verstehe jetzt
13.11.2019 16:29:01
Tino
Hallo,
dafür gibt es leider kein Event.
Von einer Dauerbefeuerung mittels Timer kann nicht empfehlen!
Gruß Tino
Statuszeile
13.11.2019 16:43:05
Daniel
Hi
wenn du nur die Zellen in der Spalte S markierst, kannst du dir die Summe in der Statuszeile unten rechts am Fenster anzeigen lassen.
mit einem Rechtklick auf diesen Bereich kannst du auswählen, welche Daten zum selektierten Zellbereich du dort anzeigen lassen willst.
Makrocode brauchst du sonst nicht.
Wenn die Summe in einer Meldebox angezeigt werden soll, würde ich zu einer Userform raten.
Im SelectionChange-Event des Tabellenblatts kannst du dann die Summe berechnen und dort ausgeben lassen.
Aber bei deinem Kenntnissstand solltest du erstmal die Möglichkeiten ausprobieren, die dir Excel so schon bietet.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige