Best. Werte per VBA summieren???

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Best. Werte per VBA summieren???
von: ralle
Geschrieben am: 02.03.2005 09:56:35
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

Bild

Betrifft: AW: Best. Werte per VBA summieren???
von: Roland Hochhäuser
Geschrieben am: 02.03.2005 11:54:14
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
Bild

Betrifft: AW: Best. Werte per VBA summieren???
von: ralle
Geschrieben am: 02.03.2005 14:18:30
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
Bild

Betrifft: AW: Best. Werte per VBA summieren???
von: Roland Hochhäuser
Geschrieben am: 02.03.2005 14:50:23
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
Bild

Betrifft: AW: Best. Werte per VBA summieren???
von: ralle
Geschrieben am: 02.03.2005 15:01:58
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
Bild

Betrifft: AW: Best. Werte per VBA summieren???
von: Roland Hochhäuser
Geschrieben am: 02.03.2005 15:19:51
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
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Best. Werte per VBA summieren???"