Excel을 위해 vba에서 다차원 배열 변수를 초기화하는 방법
Microsoft 사이트에서는 다음 코드가 작동해야 한다고 제안합니다.
Dim numbers = {{1, 2}, {3, 4}, {5, 6}}
그런데 엑셀 VBA 모듈에서 사용하려고 하면 컴파일 오류가 발생합니다.1D 배열의 경우 다음이 작동합니다.
A = Array(1, 2, 3, 4, 5)
그러나 2D 어레이에 대해서는 동일한 방법을 찾을 수 없었습니다.무슨 생각 있어요?
다음을 활용하여 축약 형식을 사용할 수도 있습니다.Evaluate
함수 및 정적 배열.아래 코드에서,varData
설정된 위치[]
의 약자입니다.Evaluate
기능과.{...}
식은 정적 배열을 나타냅니다.각 행은 다음 행으로 구분됩니다.;
및 각 필드는 a로 구분됩니다.,
. 시모코의 코드와 동일한 최종 결과를 얻을 수 있지만 원래 질문에 더 가까운 구문을 사용할 수 있습니다.
Sub ArrayShorthand()
Dim varData As Variant
Dim intCounter1 As Integer
Dim intCounter2 As Integer
' set the array
varData = [{1, 2, 3; 4, 5, 6; 7, 8, 9}]
' test
For intCounter1 = 1 To UBound(varData, 1)
For intCounter2 = 1 To UBound(varData, 2)
Debug.Print varData(intCounter1, intCounter2)
Next intCounter2
Next intCounter1
End Sub
마이크로소프트 사이트에서는...
이 제안은 VB를 위한 것입니다.NET이지만 VBA는 아닙니다.
VBA의 경우 방향을 잘 잡으셨습니다.다음을 수행할 수 있습니다.
Dim A as Variant
A = Array(Array(1, 2), Array(3, 4), Array(5, 6))
대체 경유지Application.Index()
드미트리브 파블리브의 들쭉날쭉한 배열을 사용하여 (그리고 Robin Mackenzie의 짧은 손 접근법의 대안으로) 한 단계 더 발전하여 적용할 수 있습니다.Application.Index()
이 배열 배열에서 (각각 동일한 원소 개수를 가진) - 이중 영점 인수에 유의하십시오!:
Sub Get2DimArray()
Dim arr() As Variant
'a) build array of arrays (aka as jagged array)
arr = Array(Array(1, 2, 4), Array(4, 5, 6), Array(7, 8, 9))
'b) make it 2-dimensional
arr = Application.Index(arr, 0, 0)
End Sub
결과적으로 2차원(1 To 3, 1 To 3)이 됩니다. 여기서
* Row 1 ~> 1|2|4
* Row 2 ~> 4|5|6
* Row 3 ~> 7|8|9
관련 링크
기능의 일부 특이점에 대한 추가 판독
따라서 여기서는 아무 것도 없이 배열을 생성합니다. 그 크기만 알려주면 됩니다.0은 배열에서 위치로 계산되므로 차원은 X+1입니다.
Dim MyArray(X, X) As Integer
예를 들어 그렇게 함으로써 그것을 채웁니다.
MyArray (0,0) = 1
MyArray (0,1) = 2
MyArray (1,0) = 3
MyArray (1,1) = 4
...
뭐 이런 거.
더 편리한 채우기 방법을 원하는 경우 채우고 있는 숫자에 고유한 논리가 있는 경우 For Cycles(주기에 대해)를 사용할 수 있습니다.
런 타임까지 사이즈를 알 수 없는 경우.
Dim nRows As Integer, nCols As Integer
...
Dim yourArray() As Integer
ReDim yourArray(1 to nRows, 1 to nCols) 'One base initialisation
'ReDim yourArray(0 to nRows - 1, 0 to nCols - 1) 'Zero base initialisation
그러면 다음과 같이 그리드를 초기화(또는 액세스)할 수 있습니다.
yourArray(1, 1) = ... 'set first cell
언급URL : https://stackoverflow.com/questions/24584088/how-to-initialize-a-multidimensional-array-variable-in-vba-for-excel
'source' 카테고리의 다른 글
Spring Boot 1.4 MVC 테스트에서 @WebMvcTest로 MockMvc 설정 (0) | 2023.09.13 |
---|---|
PowerShell 선택 문자열을 사용하여 파일에서 두 개 이상의 패턴을 찾는 방법은 무엇입니까? (0) | 2023.09.13 |
XML 파일을 XmlDocument로 읽기 (0) | 2023.09.13 |
Spring boot 설정 및 log4j2 설정 방법은? (0) | 2023.09.13 |
Excel VBA 라인 컬러 / 마커 라인 컬러 (0) | 2023.09.13 |