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

Forumthread: MsgBox Liste ausgeben

MsgBox Liste ausgeben
Scot
Liebe Leute
Ich suche die Lösung für ein VBA Script. Folgendes möchte ich tun:
1. Behandle nur jene Zellen in der Spalte M, welche ab Zelle 7 einen Wert (egal was) haben.
2. Gib in einer MsgBox eine Liste der gefundenen Werte aus. Dabei sollten die Werte untereinander stehen.
Es handelt sich um eine Namenliste, welche die MsgBox folgendermassen ausgeben soll:
"Diese Personen haben innerhalb der nächsten 30 Tage Geburtstag:
Name 1
Name 2
Name 3
..."
Ganz herzlichen Dank für eure Mithilfe!
Gruss
Scot
Anzeige

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

Betreff
Benutzer
Anzeige
AW: MsgBox Liste ausgeben
31.03.2011 11:37:15
Matthias
Hallo
Option Explicit
Sub MyList()
Dim rng As Range, strg As String
strg = "Geburtstagsliste:" & vbLf
For Each rng In Range("M:M")
If rng.Value  "" Then strg = strg & vbLf & rng.Value
Next
MsgBox strg
End Sub
evtl ("M:M") eingrenzen also in etwa so:
For Each rng In Range("M1:M100")
oder die letzte beschrieben Zelle in ("M") auslesen.
Gruß Matthias
Anzeige
AW: MsgBox Liste ausgeben
31.03.2011 11:49:00
Scot
Lieber Matthias
Super, vielen Dank. Damit kann ich weiterarbeiten.
Herzlich
Scot
od so
31.03.2011 11:47:38
CitizenX
hallo scot
Option Explicit

Sub GTage()
Dim lngLast
Dim i As Long
Dim myArray()

lngLast = Sheets(1).Cells(Rows.Count, 13).End(xlUp).Row
Redim myArray(7 To lngLast)

For i = 7 To lngLast
    If Cells(i, 13) <> "" Then myArray(i) = Cells(i, 13)
Next
    MsgBox "Diese Personen haben innerhalb der nächsten 30 Tage Geburtstag:" _
    & String(2, Chr(10)) & Join(myArray, Chr(10))

End Sub

Grüße
Steffen
Anzeige
AW: od so
31.03.2011 12:55:58
Scot
Lieber Steffen
Auch dir herzlichen Dank. Ich hatte fast vermutet, dass es auch über eine Array-Funktion geht, habe aber bisher nicht mit Arrays gearbeitet. Der Lösungsvorschlag von Matthias funktioniert bisher gut. Es könnte trotzdem sein, dass ich nochmal Hilfe benötige. Falls, werde ich mich melden.
Herzlich
Scot
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

MsgBox Liste ausgeben in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Liste von Werten aus einer bestimmten Excel-Spalte in einer MsgBox auszugeben, kannst du das folgende VBA-Skript verwenden. Dieses Beispiel behandelt die Zellen in Spalte M, beginnend ab Zeile 7.

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Sub MyList()
       Dim rng As Range, strg As String
       strg = "Diese Personen haben innerhalb der nächsten 30 Tage Geburtstag:" & vbLf
       For Each rng In Range("M7:M100") ' Eingrenzung auf die Zeilen 7 bis 100
           If rng.Value <> "" Then strg = strg & vbLf & rng.Value
       Next
       MsgBox strg
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drücke ALT + F8, wähle MyList aus und klicke auf Ausführen.

Die MsgBox zeigt nun die Namen der Personen, die innerhalb der nächsten 30 Tage Geburtstag haben, untereinander aufgelistet an.


Häufige Fehler und Lösungen

  • Fehler: MsgBox zeigt keinen Inhalt an.

    • Lösung: Stelle sicher, dass die Zellen in Spalte M tatsächlich Werte enthalten und dass die Range korrekt angegeben ist (z.B. Range("M7:M100")).
  • Fehler: Code läuft nicht.

    • Lösung: Überprüfe, ob du die Option Explicit Zeile oben im Code hast. Wenn du diese Zeile verwendest, musst du alle Variablen deklarieren.

Alternative Methoden

Eine alternative Methode zur Anzeige von Werten in einer MsgBox ist die Verwendung eines Arrays. Hier ist ein Beispiel, wie du ein Array verwenden kannst, um die Werte auszugeben:

Option Explicit

Sub GTage()
    Dim lngLast As Long
    Dim i As Long
    Dim myArray() As String

    lngLast = Sheets(1).Cells(Rows.Count, 13).End(xlUp).Row ' Letzte Zeile in Spalte M
    ReDim myArray(7 To lngLast)

    For i = 7 To lngLast
        If Cells(i, 13) <> "" Then myArray(i) = Cells(i, 13)
    Next i
    MsgBox "Diese Personen haben innerhalb der nächsten 30 Tage Geburtstag:" & _
           vbLf & Join(myArray, vbLf)
End Sub

Diese Methode gibt die Werte aus einem Array in einer MsgBox aus und kann für größere Datenmengen nützlich sein.


Praktische Beispiele

Hier sind zwei Beispiele, wie du die MsgBox in verschiedenen Szenarien verwenden kannst:

  1. Einzelne Werte anzeigen:

    MsgBox "Der nächste Geburtstag ist: " & Cells(7, 13).Value
  2. Werte aus einer bestimmten Range:

    Dim rng As Range
    Set rng = Range("M7:M10")
    MsgBox "Die Geburtstage sind: " & Join(Application.Transpose(rng.Value), vbLf)

Diese Beispiele zeigen dir, wie flexibel die Verwendung der MsgBox in Excel VBA sein kann.


Tipps für Profis

  • Verwende vbCrLf: Du kannst vbCrLf anstelle von vbLf verwenden, wenn du eine neue Zeile in der MsgBox beginnen möchtest. Dies kann bei der Formatierung nützlich sein.

  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung mit On Error Resume Next, um sicherzustellen, dass dein Code auch bei unerwarteten Eingaben stabil bleibt.

  • VBA-Meldung erweitern: Du kannst die MsgBox mit verschiedenen Schaltflächen und Icons anpassen, indem du Parameter wie vbYesNo oder vbExclamation hinzufügst.


FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen? Du kannst die MsgBox anpassen, indem du verschiedene Parameter hinzufügst. Zum Beispiel: MsgBox "Text", vbInformation, "Titel".

2. Kann ich die Werte in einer MsgBox sortieren? Ja, du kannst die Werte in einem Array sortieren, bevor du sie in der MsgBox anzeigst. Verwende dazu die Sort-Funktion oder eine benutzerdefinierte Sortierroutine.

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