VBA를 사용하여 어레이에서 각각 사용

Bilal Shahid 2023년6월21일
VBA를 사용하여 어레이에서 각각 사용

VBA에는 두 가지 유형의 For 루프가 있습니다.

  1. For Each 루프
  2. For To Next 루프

이 문서에서는 배열에서 For Each 루프를 사용하는 방법에 대해 설명합니다. For To Next 루프와 관련된 예제도 기사에서 제공됩니다.

VBA를 사용하여 어레이에서 For Each 사용

예 1:

배열에서 For Each 루프를 반복하려면 다음 구문을 사용할 수 있습니다.

Public Sub sampleProgram()
    Dim arr(7) As String
    Dim element As Variant

    For Each element In arr
        func1 element
    Next element
End Sub

Sub func1(ByVal ele As String)
End Sub

코드가 압도적으로 보일 수 있습니다. 그러나 각 진술을 정확하게 이해하는 데 도움이 되도록 아래에 설명되어 있습니다.

배열에서 For Each 루프를 사용하여 반복하려면 먼저 배열을 선언하는 것이 중요합니다. 모든 데이터 유형의 배열을 선언할 수 있습니다. 이 예에서 arr 배열은 7개의 요소가 있는 문자열로 선언되었습니다.

배열이 For Each에 대한 반복자로 작동하려면 element 변수가 Variant 유형으로 선언됩니다. 그런 다음 element 변수는 배열 arr에서 값을 가져오고 배열을 반복하는 반복자로 사용됩니다.

루프 내에서 arr 배열의 반복 요소를 매개변수로 사용하는 서브루틴 func1()이 사용됩니다. 요소For Each 루프의 반복자 역할을 하기 때문에 Variant 데이터 유형입니다.

elementfunc1()에 매개변수로 전달될 때 func1()Variant 유형 매개변수를 허용하는지 확인해야 합니다. 이를 위해 다음 두 가지 작업을 수행할 수 있습니다.

  1. 위의 ByVal ele As String 예제에 정의된 대로 값으로 매개변수를 사용하는 서브루틴을 만듭니다.
  2. 그렇지 않으면 Variant를 서브루틴에 전달하기 전에 문자열 데이터 유형으로 변환하십시오. 다음은 요소를 문자열 데이터 유형으로 변환하기 위한 코드 스니펫입니다.
func1 CStr(element)

코드 예제의 func1()은 각 배열 값에 대한 For Each 루프에서 호출되는 서브루틴입니다. 더미로서 이 서브루틴은 사용자를 위해 비어 있습니다.

수행해야 하는 작업으로 채울 수 있습니다. 그렇지 않으면 For Each 루프에서 서브루틴 호출을 생략할 수도 있습니다.

예 2:

두 번째 예에서는 위에서 설명한 For Each 루프의 대안으로 For To Next 루프에 대해 설명합니다.

For Each 루프는 개체 컬렉션을 중심으로 구성됩니다. 첫 번째 예에서 설명한 것처럼 Variant 데이터 유형 변수 또는 개체는 루프의 반복자로 사용됩니다.

또한 함수를 사용하는 경우 Variant 유형 매개변수를 허용해야 합니다.

For To Next 루프는 다르게 작동합니다.; 배열의 상한과 하한을 사용합니다. 또한 Integer 유형 변수는 루프를 반복하는 데 사용되며 배열의 모든 요소에 액세스하는 데에도 사용할 수 있습니다.

다음은 코드 스니펫입니다.

Public Sub sampleProgram()
    Dim arr(7) As String
    Dim i As Long

    For i = LBound(arr) To UBound(arr)
        func1 arr(i)
    Next i
End Sub

sampleProgram()에서 데이터 유형 Stringarr로 배열이 선언되었습니다. 배열을 반복하기 위해 데이터 유형 Long의 반복자 i가 선언되었습니다.

앞에서 설명한 것처럼 배열의 하한 및 상한은 특정 함수를 사용하여 계산됩니다. For To Next 루프는 정의된 횟수만큼 반복하고 각 반복에서 서브루틴 func1()을 호출합니다.

특정 배열 요소 arr(i)의 값은 func1()에 매개변수로 전달됩니다. 따라서 Variant 데이터 유형에는 문제가 없습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - VBA Array