반응형
배열에서 for each 루프를 어떻게 사용할 수 있습니까?
문자열 배열이 있습니다.
Dim sArray(4) as String
배열의 각 문자열을 살펴 보겠습니다.
for each element in sarray
do_something(element)
next element
do_something 문자열을 매개 변수로 사용
요소를 문자열로 전달하는 동안 오류가 발생합니다.
ByRef 인수 불일치
요소를 문자열 등으로 변환해야합니까?
요소는 변형이어야하므로 문자열로 선언 할 수 없습니다. 함수는 ByVal을 전달하는 한 문자열 인 경우 변형을 허용해야합니다.
Public Sub example()
Dim sArray(4) As string
Dim element As variant
For Each element In sArray
do_something (element)
Next element
End Sub
Sub do_something(ByVal e As String)
End Sub
다른 옵션은 전달하기 전에 변형을 문자열로 변환하는 것입니다.
do_something CStr(element)
for each 루프 구조는 컬렉션 객체를 중심으로 설계되었습니다. For .. 각 루프에는 변형 유형 또는 개체가 필요합니다. "요소"변수가 변형으로 입력되므로 "do_something"함수는 변형 유형을 허용해야합니다. 또는 루프를 다음과 같이 수정할 수 있습니다.
Public Sub Example()
Dim sArray(4) As String
Dim i As Long
For i = LBound(sArray) To UBound(sArray)
do_something sArray(i)
Next i
End Sub
Fink가 제안한 것과 같은 카운터 변수를 사용합니다. For Each를 원하고 ByRef (긴 문자열에 더 효율적일 수 있음)를 전달하려면 CStr을 사용하여 요소를 문자열로 캐스팅해야합니다.
Sub Example()
Dim vItm As Variant
Dim aStrings(1 To 4) As String
aStrings(1) = "one": aStrings(2) = "two": aStrings(3) = "three": aStrings(4) = "four"
For Each vItm In aStrings
do_something CStr(vItm)
Next vItm
End Sub
Function do_something(ByRef sInput As String)
Debug.Print sInput
End Function
이 간단한 inArray 함수는 어떻습니까?
Function isInArray(ByVal stringToBeFound As String, ByVal arr As Variant) As Boolean
For Each element In arr
If element = stringToBeFound Then
isInArray = True
Exit Function
End If
Next element
End Function
참고 URL : https://stackoverflow.com/questions/4228137/how-can-i-use-a-for-each-loop-on-an-array
반응형
'Program Club' 카테고리의 다른 글
| Eclipse 내부 오류 "뉴스 피드 폴링" (0) | 2020.11.26 |
|---|---|
| NumPy의 가중 표준 편차 (0) | 2020.11.26 |
| postInvalidate ()는 무엇을합니까? (0) | 2020.11.26 |
| Rails : csrf_meta_tag는 어떻게 작동합니까? (0) | 2020.11.26 |
| Rails 4는 OR 쿼리를 지원합니까? (0) | 2020.11.26 |