Declare and Initialize String Array in VBA

前端 未结 6 1684
刺人心
刺人心 2020-11-28 02:54

This should work according to another stack overflow post but its not:

Dim arrWsNames As String() = {\"Value1\", \"Value2\"}

Can anyone let

相关标签:
6条回答
  • 2020-11-28 03:28

    In the specific case of a String array you could initialize the array using the Split Function as it returns a String array rather than a Variant array:

    Dim arrWsNames() As String
    arrWsNames = Split("Value1,Value2,Value3", ",")
    

    This allows you to avoid using the Variant data type and preserve the desired type for arrWsNames.

    0 讨论(0)
  • 2020-11-28 03:32

    Try this:

    Dim myarray As Variant
    myarray = Array("Cat", "Dog", "Rabbit")
    
    0 讨论(0)
  • 2020-11-28 03:34
    Public Function _
    CreateTextArrayFromSourceTexts(ParamArray SourceTexts() As Variant) As String()
    
        ReDim TargetTextArray(0 To UBound(SourceTexts)) As String
        
        For SourceTextsCellNumber = 0 To UBound(SourceTexts)
            TargetTextArray(SourceTextsCellNumber) = SourceTexts(SourceTextsCellNumber)
        Next SourceTextsCellNumber
    
        CreateTextArrayFromSourceTexts = TargetTextArray
    End Function
    

    Example:

    Dim TT() As String
    TT = CreateTextArrayFromSourceTexts("hi", "bye", "hi", "bcd", "bYe")
    

    Result:

    TT(0)="hi"
    TT(1)="bye"
    TT(2)="hi"
    TT(3)="bcd"
    TT(4)="bYe"
    

    Enjoy!

    Edit: I removed the duplicatedtexts deleting feature and made the code smaller and easier to use.

    0 讨论(0)
  • 2020-11-28 03:36
    Dim myStringArray() As String
    *code*
    redim myStringArray(size_of_your_array)
    

    Then you can do something static like this:

    myStringArray = { item_1, item_2, ... }
    

    Or something iterative like this:

    Dim x
    For x = 0 To size_of_your_array
        myStringArray(x) = data_source(x).Name
    Next x
    
    0 讨论(0)
  • 2020-11-28 03:39

    Using

    Dim myarray As Variant
    

    works but

    Dim myarray As String
    

    doesn't so I sitck to Variant

    0 讨论(0)
  • 2020-11-28 03:40

    The problem here is that the length of your array is undefined, and this confuses VBA if the array is explicitly defined as a string. Variants, however, seem to be able to resize as needed (because they hog a bunch of memory, and people generally avoid them for a bunch of reasons).

    The following code works just fine, but it's a bit manual compared to some of the other languages out there:

    Dim SomeArray(3) As String
    
    SomeArray(0) = "Zero"
    SomeArray(1) = "One"
    SomeArray(2) = "Two"
    SomeArray(3) = "Three"
    
    0 讨论(0)
提交回复
热议问题