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

Collection Items in MsgBox darstellen

Forumthread: Collection Items in MsgBox darstellen

Collection Items in MsgBox darstellen
02.10.2008 20:15:23
Andreas
Hallo Herber Fans,
wie ich Werte zu einer Collection hinzufüge ist mir bekannt. Aber wie kann ich die Werte einer Collection in einer Messagebox untereinander mit einem „vblf“ dazwischen anzeigen lassen? Über den Debug.print kann ich den Inhalt einer Collection mit dem Befehl .item(i) wunderbar ausgeben. Aber diese Auflistung dann in einer Messagebox? Ich habe hier im Forum gesucht, aber nichts zu dem Thema gefunden.
In der Beispieldatei werden aus der Gesamtheit alle PivotFields nur die mit der RowField Orientation in die Collection eingelesen und sollen am Ende des Codes in einer MsgBox angezeigt werden. Egal wie viele Items die Collection gesammelt hat, soll die MsgBox diese flexibel und korrekt darstellen.
https://www.herber.de/bbs/user/55795.xls
Vielen Dank für Hinweise und Ideen aus dem Forum.
Einen schönen Abend noch. Grüße, Andreas
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Collection Items in MsgBox darstellen
02.10.2008 20:25:00
Erich
Hallo Andreas,
probiers mal so:

Dim strMsg As String
strMsg = pvFieldCol.Item(1)
For i = 2 To pvFieldCol.Count
strMsg = strMsg & vbLf & pvFieldCol.Item(i)
Next i
MsgBox strMsg

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Collection Items in MsgBox darstellen
02.10.2008 22:24:41
Andreas
Hallo Erich,
vielen Dank. Funktioniert einwandfrei!!! Das Gute kann mitunter so einfach sein... Werde mir Deine Lösung merken!
Schönes Wochenende!
Grüße, Andreas
;
Anzeige
Anzeige

Infobox / Tutorial

Collection Items in MsgBox darstellen


Schritt-für-Schritt-Anleitung

Um die Werte einer Excel Collection in einer MessageBox darzustellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code fügt alle Items der Collection in einen String ein, wobei zwischen den Items ein Zeilenumbruch (vbLf) eingefügt wird.

Dim strMsg As String
strMsg = pvFieldCol.Item(1) ' Start mit dem ersten Collection Item
For i = 2 To pvFieldCol.Count
    strMsg = strMsg & vbLf & pvFieldCol.Item(i) ' Items untereinander auflisten
Next i
MsgBox strMsg ' Ausgabe in der MessageBox

Dieser Code geht davon aus, dass Du bereits eine Collection mit dem Namen pvFieldCol erstellt hast, die mit PivotFields gefüllt ist. Die MessageBox zeigt alle Items der Collection an, unabhängig von der Anzahl der gespeicherten Elemente.


Häufige Fehler und Lösungen

  1. Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Lösung: Stelle sicher, dass Deine Collection korrekt initialisiert und mit Werten gefüllt ist, bevor Du versuchst, die Items anzuzeigen.
  2. Fehler: MessageBox zeigt nur das erste Item an

    • Lösung: Überprüfe die Schleife im Code. Achte darauf, dass Du die Schleife von 2 bis zur Anzahl der Collection Items (pvFieldCol.Count) laufen lässt, um alle Items einzuschließen.

Alternative Methoden

Eine alternative Methode, um die Inhalte einer Excel Collection anzuzeigen, wäre die Verwendung eines UserForms. Dies würde Dir mehr Flexibilität bei der Darstellung der Daten ermöglichen. Du kannst beispielsweise eine ListBox in einem UserForm verwenden, um die Items anzuzeigen.

Ein einfaches Beispiel dafür könnte so aussehen:

Dim i As Integer
For i = 1 To pvFieldCol.Count
    UserForm1.ListBox1.AddItem pvFieldCol.Item(i)
Next i
UserForm1.Show

Praktische Beispiele

Nehmen wir an, Du hast eine Collection mit verschiedenen Namen oder Werten, die Du in einer MessageBox darstellen möchtest. Hier ist ein einfaches Beispiel, das zeigt, wie Du eine vba collection mit Namen füllst und diese dann in einer MessageBox anzeigst:

Dim names As Collection
Set names = New Collection
names.Add "Anna"
names.Add "Bernd"
names.Add "Clara"

Dim strMsg As String
strMsg = names.Item(1)
For i = 2 To names.Count
    strMsg = strMsg & vbLf & names.Item(i)
Next i
MsgBox strMsg

Die MessageBox zeigt „Anna“, „Bernd“ und „Clara“ untereinander an.


Tipps für Profis

  • Verwende Join für eine effizientere String-Zusammenstellung: Anstatt eine Schleife zu verwenden, kannst Du die Items auch in ein Array speichern und dann die Join-Funktion verwenden, um sie zusammenzuführen. Das kann die Leistung bei großen Collections verbessern.

    Dim items() As String
    ReDim items(1 To pvFieldCol.Count)
    For i = 1 To pvFieldCol.Count
      items(i) = pvFieldCol.Item(i)
    Next i
    MsgBox Join(items, vbLf)
  • Debugging: Verwende Debug.Print, um den Inhalt der Collection während der Entwicklung zu überprüfen. So kannst Du sicherstellen, dass alle Items korrekt hinzugefügt wurden.


FAQ: Häufige Fragen

1. Wie kann ich eine leere Collection überprüfen?
Du kannst die Anzahl der Items in der Collection prüfen. Wenn pvFieldCol.Count gleich 0 ist, ist die Collection leer.

2. Was ist der Unterschied zwischen einer Collection und einem Array in VBA?
Eine Collection kann dynamisch wachsen und erlaubt das Hinzufügen und Entfernen von Items zur Laufzeit, während ein Array eine feste Größe hat, die bei seiner Erstellung definiert wird.

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