User Tools

Site Tools


vba:cast:emptyarray

[VBA] emptyArray(), emptyArrayRef()

Einen leeren Array erstellen

Version 1.0.0 - 04.09.2019

Diese Methoden erstellen leere Arrays, die später mit redim endgültig zu dimensionieren

Download cast_emptyarray.bas (V-1.0.0)

Ich habe Funktion, die einen Array zurückgeben. Ggf. auch einen leeren. Bisher hatte ich das immer als myVar = Array() gelöst. DOch nach dem neusten Update funktioniert Array() nicht mehr.
Neu läse ich das über eine Deklarierte Funktion Lib “oleaut32” Alias “SafeArrayCreateVector”. Diese Definition muss aber genau definiert sein, was für ein Array zurückgegeben wird. Darum habe ich all die Definitionen in einem Modul zusammengefasst

Definitionen

Array<vbVarType> = emptyArray([vbVarType])

Array<vbVarType> = emptyArray(Array<vbVarType>)
Public Function emptyArray(Optional ByVal iVarType As VbVarType = vbVariant) As Variant
 
Public Function emptyArrayRef(ByRef ioArray As Variant) As Variant

Beispiele

Code

cast_emptyarray.bas
Attribute VB_Name = "cast_emptyArray"
'-------------------------------------------------------------------------------
'File         : cast_emptyArray.bas
'               Copyright mpl by ERB software
'               All rights reserved
'               http://wiki.yaslaw.info/dokuwiki/doku.php/vba
'Environment  : VBA 2010 +
'Version      : 1.0.0
'Name         : emptyArray
'Author       : Stefan Erb (ERS)
'History      : 04.09.2019 - ERS - Creation
'-------------------------------------------------------------------------------
 
Option Explicit
 
Private Declare Function emptyArrayVariant Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbVariant, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Variant()
Private Declare Function emptyArrayDate Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbDate, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Date()
Private Declare Function emptyArrayString Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbString, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As String()
Private Declare Function emptyArrayInteger Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbInteger, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Integer()
Private Declare Function emptyArrayLong Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbLong, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Long()
Private Declare Function emptyArrayDouble Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbDouble, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Double()
Private Declare Function emptyArrayBoolean Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbBoolean, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Boolean()
Private Declare Function emptyArrayObject Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbObject, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Object()
 
'/**
' * Erstellt einen leeren Array.
' * @param  VbVarType
' * @return Array<VbVarType>
' */
Public Function emptyArray(Optional ByVal iVarType As VbVarType = vbVariant) As Variant
    Select Case iVarType
        Case vbDate:        emptyArray = emptyArrayDate
        Case vbString:      emptyArray = emptyArrayString
        Case vbInteger:     emptyArray = emptyArrayInteger
        Case vbLong:        emptyArray = emptyArrayLong
        Case vbDouble:      emptyArray = emptyArrayDouble
        Case vbBoolean:     emptyArray = emptyArrayBoolean
        Case vbObject:      emptyArray = emptyArrayObject
        '//TODO: weitere Datentypen abhandeln
        Case Else:          emptyArray = emptyArrayVariant
    End Select
End Function
 
'/**
' * Erstellt einen leeren Array auf der Basis eines Arrays
' * @param  Array<vbVarType>
' * @return Array<vbVarType>
' */
Public Function emptyArrayRef(ByRef ioArray As Variant) As Variant
    If IsArray(ioArray) Then
        ioArray = emptyArray(varType(ioArray) - vbArray)
    Else
        ioArray = emptyArrayVariant
    End If
    emptyArrayRef = ioArray
End Function
 
 
 
vba/cast/emptyarray.txt · Last modified: 04.09.2019 14:24:32 by yaslaw