version=1.1.1
vdate=04.09.2019
fname=udf_printlist.bas
ns=%NAMESPACE%
fpath=/vba/functions
====== [VBA] printList() ======
Schreibt eine Liste in lesbarer Form
==Version %%version%% - %%vdate%%==
{{%%fname%%|Download %%fname%% (V-%%version%%)}}
>Siehe auch [[vba:functions:printref]]
===== Beschreibung =====
Mit dieser Methode kann eine Liste sauber ausgegeben werden- Ich verwende sie zum Beispiel für die Methode [[vba:functions:printref]].
===== Definitionen =====
printList(DataArray [,HeaderArray [,ReturnOptionen [,FormatArray]]])Public Function printList( _
ByRef iData As Variant, _
Optional ByRef iHeader As Variant = Null, _
Optional ByVal iReturn As enuPrintListOutputMethode = prListConsole, _
Optional ByRef iFormats As Variant = Null _
) As String
***iData** Array> Ein verschachtelter Array. Array>
***iHeader** Array Ein Array mit dem Header
***iReturn** enuPrintListOutputMethode Art der Rückgabe: Standart ist das Direktfenster. Alternativ kann man auch als Rückgabewert der Funktion oder in den Zwieschnepseicher des PCs schreiben. Die Auswahlen lassen sich auch kombinieren: prConsole+prClipboard
***iFormats** Ein Array mit dFormaten um die Daten zu formatieren. Siehe auch format() von VBA
***Return** String Resultat oder Fehlermeldung
==== Enumerator ====
=== enuPrintListOutputMethode ===
Auswahl was mir der Analyse geschehen soll. Die Werte lassen sich mit + kombinieren
***prListConsole**(1) Die Ausgabe wird ins Direktfenster geschrieben
***prListReturn**(2) Die Ausgabe wird als Funktionsrückgabewert zurückgegeben
***prListClipboard**(4) Die Ausgabe wird in den Zwieschenspeicher geschrieben
***prListMsgBox**(8) Die Ausgabe wird als Popup ausgegeben
===== Settings =====
Das Modul hat eine Kompilierbedinung. MS Access kennt den Befehl NZ(), MS Excel kennt den nicht. Um in Excel den Befehl zu verwenden habe ich die NZ-Funktion nachgebaut und in eine Bedingte Komplilierung gesetzt. Darum muss am Anfang vom Code eingestellt werden, ob der CODE unter MS Access läuft oder nicht
'-------------------------------------------------------------------------------
' -- ! SETTINGS !
'-------------------------------------------------------------------------------
'In Excel funktionieren Events nicht. Auch der NZ() gibt es dort nicht.
'Darum hier angeben ob es sich um MS Access handelt oder eben nicht. Leider gibts datzu keine Systemvariable
#Const isAccess = True
....
#If Not isAccess Then
'/**
' * Wandelt NULL in EMpty oder einen Defaultwert
' * @param Variant
' * @param Variant
' * @return Variant
' */
Private Function NZ(ByRef iValue As Variant, Optional ByRef iDefault As Variant = Empty) As Variant
If IsNull(iValue) Then
NZ = iDefault
Else
NZ = iValue
End If
End Function
#End If
===== Beispiele =====
Das Beispiel macht so natürlich keinen Sinn, zeigt aber wie der Aufbaeu der Parameter sein muss
printlist array(array(1,2,3, date()), array(11,22,33, date()+1)), array("A", "B", "C", "D")
A | B | C | D
---|----|----|-----------
1 | 2 | 3 | 29.02.2016
11 | 22 | 33 | 01.03.2016
Ein Beispiel ohne Header, dafür ist die 2te Spalte formatiert
printlist array(array(1, 2, "abc"), array(1.5, 2345.6, null)),,,array(,"#,##0.00")
1 | 2.00 | abc
1.5 | 2'345.60 |
Einweiteres Beispiel ist die Funktion [[vba:functions:printref]].
===== Code =====