Variablen in einem Array speichern und in MsgBox ausgeben
Schritt-für-Schritt-Anleitung
Um Variablen in einem Array zu speichern und diese in einer MsgBox auszugeben, kannst Du folgenden VBA-Code verwenden. Hier wird eine Liste von Artikelnummern erstellt und in einer MsgBox angezeigt, auch wenn einige Nummern nicht gefunden wurden.
Private Sub FindSheets()
Dim ArtNr As Variant
Dim MySheet As Worksheet
Dim lngRow As Long, lngC As Long
Dim Gedruckt As Integer
Dim strMissing As String
Dim intIndex As Integer
Dim vTmp() As Variant
lngRow = Sheets("0000-START").Cells(Rows.Count, 1).End(xlUp).Row
For lngC = 2 To lngRow
ArtNr = Worksheets("0000-START").Cells(lngC, 1)
If ArtNr = "" Then Exit Sub
For Each MySheet In ActiveWorkbook.Worksheets
If InStr(1, MySheet.Name, ArtNr) > 0 Then
MySheet.PrintOut
Gedruckt = Gedruckt + 1
Exit For
Else
If intIndex = 0 Then
ReDim vTmp(0) As Variant
vTmp(0) = ArtNr
intIndex = intIndex + 1
Else
If IsError(Application.Match(ArtNr, vTmp, 0)) Then
ReDim Preserve vTmp(intIndex)
vTmp(intIndex) = ArtNr
intIndex = intIndex + 1
End If
End If
End If
Next
Next
If intIndex > 0 Then strMissing = Join(vTmp, vbLf)
MsgBox "Artikel insgesamt: " & lngRow - 2 & vbLf & _
"davon gedruckt: " & Gedruckt & vbLf & _
"Unbekannte Artikel: " & (lngRow - 2) - Gedruckt & vbLf & _
"Unbekannte Artikelnummern:" & vbLf & vbLf & strMissing, _
vbInformation + vbOKOnly, "Info"
End Sub
Häufige Fehler und Lösungen
-
Falsche MsgBox-Anzeige: Wenn die MsgBox nicht die erwarteten Werte anzeigt, überprüfe, ob die Artikelnummern korrekt in das Array eingefügt werden. Achte darauf, dass ReDim Preserve verwendet wird, um das Array zu vergrößern, ohne die bestehenden Werte zu verlieren.
-
Array bleibt leer: Wenn das Array leer bleibt, stelle sicher, dass die Schleife, die die Worksheets durchläuft, tatsächlich die richtigen Bedingungen erfüllt. Teste die InStr-Bedingung.
Alternative Methoden
Eine alternative Methode zur Ausgabe von Array-Werten in einer MsgBox könnte die Verwendung von Debug.Print sein, um die Werte in das Immediate-Fenster von VBA zu drucken, anstatt sie in einer MsgBox anzuzeigen. Dies kann hilfreich sein, um sicherzustellen, dass alle Werte korrekt erfasst werden, bevor Du sie in eine MsgBox ausgibst.
Praktische Beispiele
Angenommen, Du hast eine Excel-Tabelle mit Artikelnummern in der Spalte A. Der oben angegebene VBA-Code sucht nach diesen Nummern in den Arbeitsblättern der Arbeitsmappe und gibt die fehlenden Artikelnummern in einer MsgBox aus. Dies ist besonders nützlich, wenn Du sicherstellen möchtest, dass alle Artikel gedruckt werden und Du eine Übersicht der nicht gefundenen Artikel benötigst.
Tipps für Profis
-
Optimierung der Suche: Verwende anstelle von InStr die Methode WorksheetFunction.CountIf, um die Suche nach den Arbeitsblättern zu optimieren, wenn Du weißt, dass die Namen in einer bestimmten Form vorliegen.
-
Fehlerbehandlung: Füge eine Fehlerbehandlung hinzu, um sicherzustellen, dass der Code nicht abstürzt, wenn ein Arbeitsblatt nicht gefunden wird oder andere unerwartete Fehler auftreten.
FAQ: Häufige Fragen
1. Wie kann ich die MsgBox anpassen, um mehr Informationen anzuzeigen?
Du kannst den Text in der MsgBox anpassen, indem Du weitere Variablen und Informationen hinzufügst. Nutze die Verkettung von Strings, um den gewünschten Text zu formatieren.
2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code ist für Excel VBA ausgelegt und sollte in den meisten Versionen von Excel funktionieren, solange die VBA-Umgebung unterstützt wird.
3. Was tun, wenn die MsgBox zu viele Informationen anzeigt?
Wenn die MsgBox zu viele Informationen anzeigt, kannst Du die Anzahl der angezeigten Artikelnummern begrenzen, indem Du nur die ersten n fehlenden Artikel anzeigst oder die Ausgabe in mehrere MsgBoxen aufteilst.