반응형
분할 함수에 의해 반환되는 배열 크기 - 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)를 어떻게 얻을 수 있을까요?감사해요.
LBound와 UBound를 사용하는 경우를 고려해 보십시오.
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
반응형
'source' 카테고리의 다른 글
멀티폼 검증을 위한 저의 요구사항에 맞는 jQuery 플러그인이 있습니까? (0) | 2023.10.04 |
---|---|
데이터 프레임에서 행 이름 표시 제거 (0) | 2023.10.04 |
MySQL 저장 프로시저의 변수에 SELECT 문의 값을 저장하려면 어떻게 해야 합니까? (0) | 2023.10.04 |
MySQL: ERROR 1227 (42000):액세스 거부 - 사용자를 생성할 수 없습니다. (0) | 2023.09.24 |
현재 사양이 없을 때 'expect'가 사용되었는데, 이는 Jasmine 2.3.1에서 비동기 테스트가 타임아웃되었기 때문일 수 있습니다. (0) | 2023.09.24 |