Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Werte aus Tabellenblatt in MsgBox ausgeben

VBA - Werte aus Tabellenblatt in MsgBox ausgeben
31.12.2015 18:26:05
Ansako78
Hallo zusammen
ich habe eingeschränkte VBA-Erfahrungen und versuche gerade folgendes: es gibt eine Tabelle, in der in Spalte 1 verschiedene Kontonummern stehen, die wiederholt vorkommen, und in Spalte 2 steht die Buchungsnummer der Belastung und in Spalte 3 der belastete Betrag (es gibt keine Gutschriften, die gegengerechnet werden müssten).
Über eine Eingabebox kann der Benutzer eingeben, zu welcher Kontonummer in einer MsgBox die Belastungen gelistet werden. Die MsgBox soll zeilenweise die Buchungsnummer und den Betrag ausweisen. In der letzten Zeile der MsgBox soll die Summe der Belastungen stehen. Im Idealfall zeigt der Titel der Messagebox die Kontonummer an und superideal wäre, wenn man die MsgBox ausdrucken könnte.
Da ich keine Expertin bin, habe ich den Code soweit aufgestellt, dass er die Kontonummer abfragt und die zugehörigen Belastungen auf das zweite Tabellenblatt schreibt (ich bin behelfsmäßig so vorgegangen, weil ich gedacht habe, dass ich es leichter hinkriege, die dortigen Inhalte dann in der MsgBox anzeigen zu lassen statt irgendwie mit versteckten "Zwischenvariablen" zu arbeiten - es soll nicht elegant sein, aber funktionieren).
Dieses zweite Tabellenblatt, was nun als Quelle für die MsgBox genutzt werden kann und nicht mehr gefiltert werden muss, hat folgendes Format:
Zeile 1, Spalte 1: "Buchungsnummer"
Zeile 1, Spalte 2: "Betrag"
Zeile 2 bis n: zeigt die entsprechenden Buchungen
Zeile n+1, Spalte 1: "Summe"
Zeile n+1, Spalte 2: Gesamtbetrag der Buchungen
Mein konkretes Problem ist nun, dass die Anzahl der Buchungen immer unterschiedlich ist und in Einzelfällen die Zahl 50 erreicht. Wie kann man das mit einer Schleife lösen?
Mein Verständnis ist, dass man vorbereitend zunächst Variablen definieren muss (Analog zu den Buchungsnummern in Spalte 1) und dann diesen Variablen die zugehörigen Werte (die Beträge aus Spalte 2) zuweisen muss.
Die 'Schreibanweisung' für die MsgBox muss im Nachgang dann so flexibel sein, dass sie ebenfalls die unterschiediche Anzahl der Buchungen berücksichtigt. (Soetwas wie "MsgBox "Ziehung 1: " & Variable2 & vbLf & _ "Ziehung 3: " & Variable3 & vbLf & ....." geht nicht. Zudem ändert sich ja auch die Position für den Gesamtbetrag)
Tja, und dann wäre ja noch das Ding mit Titelzeile und dem Drucken....
Wenn man weiß, wie's geht, vermutlich ein kurzer Code, weil sicherlich mit einer Schleife lösbar...
wer kann helfen?
Besten Dank vorab
VG :-)

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bitte ignorieren! Falscher Beitrag ;-(( o.T.
31.12.2015 20:01:30
Sepp
Gruß Sepp

Anzeige
AW: VBA - Werte aus Tabellenblatt in MsgBox ausgeben
01.01.2016 14:50:53
Matthias
Hier eine Möglichkeit!
Sub msgbox_groß()
Dim text
text = ""
For i = 2 To Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
text = text & Worksheets(2).Cells(i, 1) & ": " & Worksheets(2).Cells(i, 2) & Chr(10)
Next i
MsgBox text
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte aus Tabellenblatt in MsgBox ausgeben mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsm)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub msgbox_groß()
       Dim text As String
       Dim total As Double
       text = ""
       total = 0
       ' Schleife durch die Zeilen des zweiten Tabellenblatts
       For i = 2 To Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
           text = text & Worksheets(2).Cells(i, 1) & ": " & Worksheets(2).Cells(i, 2) & vbCrLf
           total = total + Worksheets(2).Cells(i, 2)
       Next i
       text = text & "Summe: " & total
       ' MsgBox mit Kontonummer als Titel
       MsgBox text, vbInformation, "Kontonummer: " & Worksheets(2).Cells(1, 1)
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus: Drücke ALT + F8, wähle msgbox_groß und klicke auf Ausführen.

Dieser Code sammelt die Buchungsnummern und Beträge aus dem zweiten Tabellenblatt und gibt sie in einer MsgBox aus. Außerdem wird die Summe der Beträge angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Typ-Konflikt"
    Lösung: Stelle sicher, dass die Variablen korrekt deklariert sind. In unserem Beispiel wird text als String und total als Double definiert.

  • Fehler: MsgBox zeigt nichts an
    Lösung: Überprüfe, ob das zweite Tabellenblatt tatsächlich Daten enthält und ob die Schleife die Zeilen korrekt durchläuft.

  • Fehler: Titel der MsgBox ist leer
    Lösung: Stelle sicher, dass die Kontonummer in der ersten Zeile des zweiten Tabellenblatts steht.


Alternative Methoden

  • Verwendung von UserForms: Statt einer MsgBox kannst Du ein UserForm erstellen, das mehr Flexibilität bietet, z.B. für die Auswahl zwischen verschiedenen Kontonummern.
  • Export als PDF: Wenn Du die Daten drucken möchtest, könntest Du die Informationen in ein PDF-Dokument exportieren, anstatt sie nur in einer MsgBox anzuzeigen.

Praktische Beispiele

Hier ist ein Beispiel, wie Du die MsgBox erweitern kannst, um zusätzliche Informationen anzuzeigen:

Sub msgbox_erweitert()
    Dim text As String
    Dim total As Double
    text = "Belastungen für Kontonummer: " & Worksheets(2).Cells(1, 1) & vbCrLf
    total = 0
    For i = 2 To Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row
        text = text & "Buchungsnummer: " & Worksheets(2).Cells(i, 1) & ", Betrag: " & Worksheets(2).Cells(i, 2) & vbCrLf
        total = total + Worksheets(2).Cells(i, 2)
    Next i
    text = text & "Gesamtsumme: " & total
    MsgBox text, vbInformation, "Belastungen"
End Sub

Tipps für Profis

  • Verwende vbNewLine oder Chr(10) für Zeilenumbrüche in der MsgBox, um die Lesbarkeit zu verbessern.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung, um sicherzustellen, dass das Makro auch bei unerwarteten Eingaben nicht abstürzt.
  • Testen: Teste den Code in einer sicheren Umgebung, bevor Du ihn in Produktionsdateien einsetzt.

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen?
Du kannst den Text in der MsgBox ändern, indem Du die text-Variable im Code anpasst.

2. Kann ich mehrere Kontonummern abfragen?
Ja, Du kannst eine Eingabebox (InputBox) verwenden, um die Kontonummer abzufragen und den Code entsprechend anpassen, um die Daten für diese Kontonummer zu filtern.

3. Wie kann ich die Daten ausdrucken?
Du kannst die Daten in ein Word-Dokument exportieren oder direkt aus Excel drucken, anstatt sie in einer MsgBox anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige