programing

excel vba의 배열

lastmoon 2023. 7. 1. 09:20
반응형

excel vba의 배열

나는 vba로 배열 목록을 갖고 싶어서 다음과 같이 excel vba로 선언된 변형을 가지고 있습니다.

Dim Students(10) as variant

이제 학생 목록에 숫자를 저장하려고 합니다.숫자가 연속적이지 않습니다.가끔은 다음과 같은 경우:

Students(2,7,14,54,33,45,55,59,62,66,69)

vba에서 어떻게 해야 합니까?또한 어떻게 목록 항목에 액세스할 수 있습니까?

학생은 동적 배열로 선언되어야 합니다.즉, 경계를 변경할 수 있는 배열입니다. Dim Students(10)경계를 변경할 수 없고 배열에서 로드할 수 없는 배열을 제공합니다.

Dim Students() As Variant

학생 로드하기:

Students = Array(2,7,14,54,33,45,55,59,62,66,69)

요소에 액세스하는 방법

Dim Inx As Long

For Inx = LBound(Students) to UBound(Students)
  Debug.Print Students(Inx)
Next

L 경계(하한) 및 U 경계는 for 루프가 학생의 실제 요소 수에 맞게 조정됨을 의미합니다.

현재로서는 이 작업이 너무 복잡하기 때문에 이 작업이 필요한 상황은 결코 발생하지 않을 것입니다. 그러나 다음과 같습니다.

다음 방법을 사용하여 배열 내용을 한 줄로 선언하는 편리성을 유지하면서 메모리 효율적인 배열을 구성합니다(Variant는 모든 변수 유형 중에서 메모리를 가장 많이 사용하기 때문입니다).예를 따르는 방법:

Dim Students() As Long
Dim Array2() As String

Array2() = Split("2,7,14,54,33,45,55,59,62,66,69", ",")

ReDim Array1(0) As Long
For Loop1 = LBound(Array2()) To UBound(Array2())
    ReDim Preserve Array1(0 To (UBound(Array1) + 1)) As String
    Array1(Loop1) = Array2(Loop1)
Next Loop1
ReDim Preserve Array1(0 To (UBound(Array1) - 1)) As Long

Erase Array2

액세스하는 예는 다음과 같습니다.

For Loop1 = LBound(Students) to UBound(Students)
    Msgbox Students(Loop1)
Next Loop1

저는 여기서 이것을 배웠습니다: http://www.vbforums.com/showthread.php?669265-RESOLVED-VBA-Excel-Assigning-values-to-array-in-a-single-line&p=4116778&viewfull=1#post4116778

이와 같이 배열에 값을 추가할 수 있습니다.

For i = 1 to 10
    Students(i) = i
Next i

아니면 이렇게.

Students = Array(2,7,14,54,33,45,55,59,62,66,69)

그런 다음 동일한 메뉴의 값에 액세스할 수 있습니다.두 번째 옵션을 사용하는 경우 다음과 같이 선언해야 합니다.

Dim Students() As Variant

이 값은 배열에 대한 값을 제공하는 방법에 따라 다릅니다. 워크시트에서 값을 가져오시겠습니까?범위 또는 TextBox 또는 ListBox에서, 그러나 기본적으로 코드는 다음과 같습니다.

Dim students(10) as Integer
Dim Carrier as Integer
For i = LBound(students) To UBound(Students)
     'some code to get the values you want to from whatever is your source
     'then assign the value to Carrier

     students(i)=Carrier
Next i

정수만 사용할 것이라는 것을 확실히 알고 있는 경우 배열을 변형으로 축소하는 것은 좋지 않습니다. 처음에 필요하지 않은 많은 메모리를 사용하기 때문입니다.또한 할당할 숫자의 범위를 알고 있어야 합니다. 정수 한계를 초과하는 경우 이중 또는 부동을 사용해야 합니다.이번이 제가 처음으로 참여하는 사이트입니다, 치어스.

언급URL : https://stackoverflow.com/questions/9023880/array-in-excel-vba

반응형