여러 배열의 모든 요소에 대한 조건을 확인해야합니다. 하나의 루프로 최적화하고 싶습니다. 가능합니까? 이미 배열 배열과 배열 모음에 대한 코드를 확인했지만 유형 불일치 오류가 계속 발생합니다. 코드:
Private Function RowNo(ByVal text1 As String) As Long
Dim f As Range
Set f = Columns(2).Find(text1, Lookat:=xlWhole)
If Not f Is Nothing Then
RowNo = f.Row
Else
RowNo = 0
End If
End Function
Q1 = "1."
YtQ1Ar = Array("1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.7.1", "1.7.2", _
"1.7.3", "1.7.4", "1.7.5", "1.7.6", "1.7.7", "1.7.8", "1.7.9", "1.7.10", "1.7.11", "1.7.12", _
"1.7.13", "1.7.14", "1.7.15", "1.7.16", "1.7.17", "1.7.18", "1.7.19", "1.7.20", "1.7.21", "1.7.22", _
"1.7.23", "1.7.24", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13")
NtQ1Ar = Array("1.1")
Dim ArColl As Collection
Set ArColl = New Collection
ArColl.Add YtQ1Ar
ArColl.Add NtQ1Ar
ArColl.Add Q1
Dim xColl As Variant
Dim rColl As Long
Dim X As Long
For X = 1 To ArColl.Count
xColl = ArColl.Item(X)
For Each xColl In ArColl
rColl = RowNo(xColl)
If rColl = 0 Then
Debug.Print "'" & xColl & "' was not found!"
End If
Next xColl
Next X
여러 배열의 모든 요소를 통해 루프를 만드는 것이 어떻게 가능합니까?
지금까지 내가 아는 유일한 방법은 다음과 같이 자신을 호출하는 하위입니다.
Public ArColl() As Variant 'in Module
Sub ArrayRunner(ParamArray SArray() As Variant)
Dim holder, runner
For Each holder In SArray
If IsArray(holder) Then
For Each runner In holder
ArrayRunner runner
Next
Else
If Not IsMissing(holder) Then
Debug.Print holder 'print every element
'put all values in one long array
ArColl(UBound(ArColl)) = holder
ReDim Preserve ArColl(UBound(ArColl) + 1)
End If
End If
Next
End Sub
또한 변경
Dim ArColl As Collection
Set ArColl = New Collection
ArColl.Add YtQ1Ar
ArColl.Add NtQ1Ar
ArColl.Add Q1
For X = 1 To ArColl.Count
xColl = ArColl.Item(X)
For Each xColl In ArColl
rColl = RowNo(xColl)
If rColl = 0 Then
Debug.Print "'" & xColl & "' was not found!"
End If
Next xColl
Next X
...에
Redim ArColl(0)
ArrayRunner(Array(YtQ1Ar, NtQ1Ar, Q1))
For X = 0 To ubound(ArColl) - 1
If RowNo(ArColl(X)) = 0 Then
Debug.Print "'" & ArColl(X) & "' was not found!"
End If
Next X
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다