source

분할 함수에 의해 반환되는 배열 크기 - Excel VBA

lovecheck 2023. 10. 4. 22:01
반응형

분할 함수에 의해 반환되는 배열 크기 - Excel VBA

지금까지 제가 한 일은 이렇습니다.

Sub MP_division()

Worksheets(3).Activate    
Dim last_cell As Integer    
Dim platforms() As String    
Dim arr_size As Integer  

platforms = Split(Cells(2, 47), ", ")    
last_cell = Mid(Range("A1048576").End(xlUp).Address, 4)    
arr_size = len(platforms) // is there something like this?    
For x = 1 To last_cell    
    For y = 1 To arr_size 
        //do something        
    Next        
Next   
End Sub

제 질문은 제 for loop에서 사용할 수 있도록 분할 함수에 의해 반환되는 배열 크기(arr_size)를 어떻게 얻을 수 있을까요?감사해요.

LBoundUBound를 사용하는 경우를 고려해 보십시오.

Sub MP_division()
    Dim last_cell As Long
    Dim platforms() As String
    Dim x As Long, y As Integer

    With ThisWorkbook.Worksheets(3)
        platforms = Split(.Cells(2, 47), ", ")
        last_cell = .Cells(.Rows.Count, "A").End(xlUp).Row
        For x = 1 To last_cell
            For y = LBound(platforms) To UBound(platforms)
                'do something
            Next
        Next
    End With
End Sub

그건 그렇고, 스플릿은 항상 제로 기반 배열을 반환합니다. (시작은).0, 그러나 출신은 아닙니다.1그렇기 때문에 Ubound와 Lbound 두 가지를 모두 사용하는 것을 권장합니다.

한가지말하자면, 난 변했습니다.Dim last_cell As Integer로.Dim last_cell As Long, 의 최대치 이후로Integer오직.32767그리고 만약 마지막 행이 더 크다면,32767, 당신은 오류를 얻게 될 것입니다.Integer.

Select/Active 문사용하지 않도록 합니다.Worksheets(3).Activate)

VBA L Bound 및 U Bound는 첫 번째 및 마지막 배열 위치를 반환하므로 정답은 다음과 같습니다.

size = UBound(myArray) - LBound(myArray) + 1
Dim first as integer
Dim last as integer
Dim arr() as string
Dim lengthOfArray as integer

'split your data and save it in arr'

first = LBound(arr)
last = UBound(arr)

lengthOfArray = last - first

msgbox lengthOfArray 'This will display the length of the array'

언급URL : https://stackoverflow.com/questions/21773889/array-size-returned-by-split-function-excel-vba

반응형