Programing

VBA에서 문자열 배열 선언 및 초기화

crosscheck 2020. 7. 19. 10:25

VBA에서 문자열 배열 선언 및 초기화


이것은 다른 스택 오버플로 게시물에 따라 작동하지만 그렇지는 않습니다.

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

누구든지 무엇이 잘못되었는지 알려줄 수 있습니까?


이 시도:

Dim myarray As Variant
myarray = Array("Cat", "Dog", "Rabbit")

String 배열의 특정 경우 에는 Variant 배열이 아닌 String 배열을 반환 하므로 Split 함수사용하여 배열을 초기화 할 수 있습니다 .

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

이렇게하면 변형 데이터 유형을 사용하지 않고 arrWsNames에 원하는 유형을 보존 할 수 있습니다.


여기서 문제는 배열의 길이가 정의되어 있지 않으며 배열이 명시 적으로 문자열로 정의되어 있으면 VBA를 혼란스럽게합니다. 그러나 변형은 필요에 따라 크기를 조정할 수있는 것으로 보입니다 (많은 기억을 가지고 있기 때문에 사람들은 일반적으로 여러 가지 이유로 피하지 않습니다).

다음 코드는 정상적으로 작동하지만 다른 언어와 비교하면 약간 수동입니다.

Dim SomeArray(3) As String

SomeArray(0) = "Zero"
SomeArray(1) = "One"
SomeArray(2) = "Two"
SomeArray(3) = "Three"

Dim myStringArray() As String
*code*
redim myStringArray(size_of_your_array)

그런 다음 다음과 같은 정적 작업을 수행 할 수 있습니다.

myStringArray = { item_1, item_2, ... }

또는 이와 같은 반복되는 것 :

Dim x
For x = 0 To size_of_your_array
    myStringArray(x) = data_source(x).Name
Next x

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

예:

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

결과:

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

즐겨

편집 : 중복 된 텍스트 삭제 기능을 제거하고 코드를 작고 사용하기 쉽게 만들었습니다.


사용

Dim myarray As Variant

작동하지만

Dim myarray As String

그래서 나는 변형에 sitck

참고 URL : https://stackoverflow.com/questions/19369132/declare-and-initialize-string-array-in-vba