Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
576to580
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
576to580
576to580
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Best. Werte per VBA summieren???

Best. Werte per VBA summieren?
02.03.2005 09:56:35
ralle
Hallo liebes Forum!
Habe heute eine knifflige Aufgabe, die ich ohne Eure Hilfe wohl nicht lösen kann, also folgendes:
Ich habe eine Excelmappe mit mehreren sheet (Die Anzahl varriert).
Im Bereich A9: A200 stehen Kontonummern. Ich bin auf der Such nach einer VBA-Lösung die folgendes macht:
Es erscheint eine Dialogbox wo ich gefragt werde welche sheets summiert werden sollen. Dort kann ich dann die jeweiligen zu summierenden sheet-namen eingeben/ bzw. in einer Auswahlliste anklicken.
Danach sucht das Makro in den angegebenen sheets in der Spalte A nach der Kontonummer 10000 und summiert den dazugehörigen Wert aus der Spalte E. (Z.b. Kontonummer 10000 steht in der Zelle A100, dann steht der dazugehörige Wert in der Zelle E100).
Das Ergebnis der Summierung wird mir dann in einem neuem Fenster angezeigt.
Wäre echt schön wenn mir da jemand helfen könnte.
Gruß
ralle

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Best. Werte per VBA summieren?
02.03.2005 11:54:14
Roland
Hallo ralle,
hier mal ein Ansatz:

Sub SummierenÜberMehrereBlätter()
Dim wb As String, b As Byte, c As Byte, d As Byte, strBlatt As String, strBlatt1 As String, wert As Double
For b = 1 To Worksheets.Count
strBlatt = strBlatt & Worksheets(b).Name & ", "
Next
strBlatt = "Zur Auswahl stehen: " & Left(strBlatt, Len(strBlatt) - 2)
On Error GoTo errorhandler
Do
d = MsgBox("Ein Blatt hinzufügen?", 4)
If d = 6 Then
wb = Application.InputBox("Welches Blatt soll berücksichtigt werden?" & vbLf & strBlatt & strBlatt1, "Auswahl")
End If
For c = 9 To 200
If Sheets(wb).Range("A" & c) = 10000 Then wert = wert + Sheets(wb).Range("E" & c)
Next
strBlatt1 = strBlatt1 & vbLf & "gewählt: " & wb & " Zwischensumme: " & wert
Loop While d = 6
MsgBox "Die Gesamtsumme beträgt: " & wert
Exit Sub
errorhandler:
MsgBox "Fehler bei der Eingabe"
End Sub

Feedback wäre schön :-))
Gruß Roland Hochhäuser
Anzeige
AW: Best. Werte per VBA summieren?
02.03.2005 14:18:30
ralle
Hallo Roland,
danke für Deine Antwort. Beim Test Deines Makros lief es nicht ganz so wie es sollte, die summierung stimmte nicht. zudem ist es sehr umständlich immer wieder ein Neues Tabellenblatt hinzuzufügen.
Ich habe jetzt mal eine Beispieldatei auf den server gelegt. In dieser Excelmappe habe ich ein Makro eingebaut (showDLG). Hier werden in einer Listbox die vorhandenen Tabellenblätter eingelesen. Nun kann man darüber die einzelnen Tabellenblätter makieren. Jetz kommt mein Problem,
Nachdem ich dann OK gedrückt habe sollte nun die summierung der angewählten Tabellenblätter beginnen und in einem neuem Dialogfenster (Messagebox?!) ausgegeben werden.
Hoffe Du kannst mir weiterhelfen.
Gruß
ralle
https://www.herber.de/bbs/user/19085.xls
Anzeige
AW: Best. Werte per VBA summieren?
02.03.2005 14:50:23
Roland
Hallo ralle,
drei kurze Anmerkungen:
1. Das Makro rechnet 100%ig richtig (auch in dem von dir hochgeladenen Beispiel), vielleicht hast du nicht berücksichtigt, dass zum Teil negative Werte dabei sind oder es haben sich Schreibfehler eingeschlichen.
2. Es ist natürlich auf die Dauer viel zu umständlich, es so zu machen wie ich es vorgeschlagen hatte, aber ich hatte dies auch nur als Ansatz gedacht.
3. Aus meiner Sicht bist du auf dem richtigen Weg, die Aufgabenstellung in einer UF zu behandeln. Dies hat aber seinen Preis; es erfordert eine zeitaufwendige Programmierung der verschiedenen Steuerelemente und deren Ereignisse, die ich nicht machen werde. Sieh bitte, dass der gewünschte Erfolg (Ausgabe in einer Messagebox) bereits mit meinem Ansatz funktioniert.
Viel Erfolg
Roland Hochhäuser
Anzeige
AW: Best. Werte per VBA summieren?
02.03.2005 15:01:58
ralle
Hallo Roland!
Also ich möchte Dich ja nicht ärgern, aber bei mir rechnet das Makro falsch. Ich habe es nochmals an der Hochgeladenen Datei ausprobiert.
Ich starte Dein Makro und gebe als erste Nummer 5721 ein danach gebe ich 5732 ein.
Jedesmal bestätige ich mit ok. Es erscheint wieder die Frage ob ich ein Tabellenblatt hinzufügen möcht und ich antwort mit nein. Also Summe gibt er mir dann 14.569,03.
Nach meiner Rechnung müssten dort jedoch 15.503,71 rauskommen. Nach meiner Meinung hat er die letzte Summe aus dem Tabellenblatt 5732 zweimal abgezogen.
Bitte versteh mich, dies soll keine Kritik an Deiner Arbeit sein.
Gruß
ralle
Anzeige
AW: Best. Werte per VBA summieren?
02.03.2005 15:19:51
Roland
Hallo ralle,
. . . Nach meiner Rechnung müssten dort jedoch 15.503,71 rauskommen
Nach meiner auch :-))
Des Rätsels Lösung: die Zeile End if muss zwei Zeilen weiter, es sähe dann so aus:

Sub Test()
Dim wb As String, b As Byte, c As Byte, d As Byte, strBlatt As String, strBlatt1 As String, wert As Double
For b = 1 To Worksheets.Count
strBlatt = strBlatt & Worksheets(b).Name & ", "
Next
strBlatt = "Zur Auswahl stehen: " & Left(strBlatt, Len(strBlatt) - 2)
On Error GoTo errorhandler
Do
d = MsgBox("Ein Blatt hinzufügen?", 4)
If d = 6 Then
wb = Application.InputBox("Welches Blatt soll berücksichtigt werden?" & vbLf & strBlatt & strBlatt1, "Auswahl")
For c = 9 To 200
If Sheets(wb).Range("A" & c) = 10000 Then wert = wert + Sheets(wb).Range("E" & c)
Next
End If
strBlatt1 = strBlatt1 & vbLf & "gewählt: " & wb & " Zwischensumme: " & wert
Loop While d = 6
MsgBox "Die Gesamtsumme beträgt: " & wert
Exit Sub
errorhandler:
MsgBox "Fehler bei der Eingabe"
End Sub

Ein Posting vorher schreibe ich über die Mühsal des Programmierens und nun beweise ich es auch noch; das wäre in der Tat nicht nötig gewesen.
Gegen berechtigte Kritik ist nichts einzuwenden, sonst kommt niemand vorwärts.
Gruß Roland Hochhäuser
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige