나는 2 일 동안이 작업을 해왔으며 주변을 스 래싱하고 여기에 지금 있습니다.문자열 기반 반환 배열 2010 년 vba
Private Function SetColumns(sRptVer As String, iColumns() As Integer)
If sRptVer = "Q1" Then
iColumns(1) = 5 '<- Subscript out of range error here Hovering shows _
'"iColumns(1)=<Subscript out of range>"
iColumns(2) = 6
iColumns(3) = 7
iColumns(4) = 17
End If
If sRptVer = "Q2" Then
iColumns(1) = 5
iColumns(2) = 6
iColumns(3) = 7
iColumns(4) = 8
iColumns(5) = 9
iColumns(6) = 10
iColumns(7) = 17
End If
SetColumns = iColumns()
End Function
Private Sub Test2()
Dim iColValue() As Integer
Dim sRptVer As String
Dim iColumns() As Integer
sRptVer = "Q1"
iColValue() = SetColumns(sRptVer, iColumns())
For i = 1 To 10
Debug.Print iColValue(i)
Next i
End Sub
목표는 분기를 지정하는 문자열을 전달하고 내가 Excel 스프레드 시트에서 값을 얻기 위해 반복 할 열을 설정하는 역할을합니다 배열을 반환 할 수있을 수있을 것입니다. (Excel에서 Access로 데이터를 가져오고 있습니다). iColumns (0)부터 시작해 보았습니다. 차이 없음. 참고 : 액세스 vba는 iColumns() = {1,2,3,4}와 같이 배열을 설정하는 것을 좋아하지 않습니다. 그것은 "{}"을 망칠. Access vba가 "ReDim"을 좋아하지 않는 것 같습니다. 컴파일 오류가 발생합니다. SetColumns 함수에서 "icolumns() as Integer"를 재 작성하면 구문 오류가 발생합니다. 미리 감사드립니다.
'Dim iColValue() As Integer'를'ReDim iColValue (10) as Integer()'로 변경 한 다음'ReCount (10) as Integer'를'Dim iColumns() As Integer'로 변경 한 다음'as Integer()'를 함수 정의의 끝에 추가합니다. 그게 당신을 시작해야합니다 –