2016-11-26 1 views
0

안녕하세요 여러분,이 기사를 통해 나를 도울 수 있기를 바랍니다. 반품을 가격으로 변환하는 간단한 함수를 작성했습니다. 그것은 쓸모가 없지만, 나는 그것을 사용하여 내 문제를 설명 할 것이다. 이 기능은 작동합니다. 그것은 내가 원하는 것을 해낸다.배열을 Excel에서 반환하는 VBA 함수

Function ret2prices(ByVal r As Range) 

    Dim temp() As Variant 
    temp = r 

    Dim prices() As Variant 
    ReDim prices(1 To (UBound(temp, 1) + 1), 1) 
    prices(1, 1) = 1 

    For i = 2 To UBound(prices, 1) 
     prices(i, 1) = 1 + temp(i - 1, 1) 
     prices(i, 1) = prices(i - 1, 1) * prices(i, 1) 
    Next i 

    ret2prices = prices 

End Function 

문제는 내가 엑셀 ​​워크 시트에서 사용할 때 항상 0 내가 그것을 내가 CTRL + Shift + Enter를 함께 MMULT를 사용하는 것과 같은 방법을 사용할 수 있도록하고 싶습니다 반환합니다. 어떠한 제안?

때문에, VBA에서

+2

'prices'의 두 번째 차원은 '1에서 1'이어야하고 이제는 '0에서 1'이고 함수는 2 개의 열이있는 배열을 반환합니다. – BrakNicku

+1

CSE가있는 열이 두 개있는 배열에 배열을 사용하려고하면 @BrakNicku가 맞음을 알 수 있습니다 –

+0

죄송합니다. 요점을 모르겠습니다. –

답변

3

배열은 0을 기반으로 시간 내 주셔서 대단히 감사합니다 :

ReDim prices(1 To (UBound(temp, 1) + 1), 1) 

ReDim prices(1 To (UBound(temp, 1) + 1), 0 To 1) 

에 질문 반환 예상되는 결과의 코드와 동일, 그러나 결과 배열의 두 번째 열에. 두 번째 차원의 하한값을 1로 변경하면 문제가 해결됩니다.

+3

'Option Base 1'도 수정 될 것입니다. 나는 일반적으로'Option Base 1 '을 싫어하지만 주어진 모듈의 모든 배열이 VBA와 범위 사이에서 데이터를 전송하도록 설계 되었다면, 아마도 유효한 유스 케이스 일 것이다. –

관련 문제