2017-05-19 1 views
1

아래 표시된 함수를 작성했습니다. Sub에서 사용할 때 작동합니다. 처음으로 함수를 작성하려고합니다. 나는 이것이 멍청한 질문이라는 것을 알고 있지만, 나는 그 기능을 실행할 수없는 것처럼 보입니다. 함수를 올바르게 호출하지 않거나 함수 헤더에 변수를 올바르게 정의하지 않은 것일 수도 있습니다.Excel VBA 정렬 배열 함수

누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

Function SortArray(ArrayToSort As String) 
    Dim x As Long, y As Long 
    Dim TempTxt1 As String 
    Dim TempTxt2 As String 

    For x = LBound(ArrayToSort) To UBound(ArrayToSort) 
     For y = x To UBound(ArrayToSort) 
      If UCase(ArrayToSort(y)) < UCase(ArrayToSort(x)) Then 
       TempTxt1 = ArrayToSort(x) 
       TempTxt2 = ArrayToSort(y) 
       ArrayToSort(x) = TempTxt2 
       ArrayToSort(y) = TempTxt1 
      End If 
     Next y 
    Next x 
End Function 


Sub CreateUniquesList() 
    Dim References() As String 
    ... 
    SortArray (References) 
    ... 
End Sub 
+0

코드로 무엇을하려하고 있으며 무엇을하지 않고 있습니까? 동일한 배열에 대해 비교를 수행하는 것처럼 보입니다. 하나가 더 커지면 전환 할 것입니다. 근본적으로 오름차순입니까? –

+0

이 함수는 알파벳 순서로 배열을 정렬합니다. 위에서 말했듯이, 이것은 Sub에서 작동합니다. 전에 함수를 작성한 적이 없기 때문에 이것이 코드를 함수로 구현하는 올바른 방법인지는 확실치 않습니다. 본질적으로 함수 내의 코드는 Sub에 있던 코드와 동일하므로 어디서 잘못 될지 잘 모르겠습니다. –

+0

함수가 아무 것도 반환하지 않기 때문에 Sub로 만들 수 있습니다 ... – MacroMarc

답변

3

매개 변수가 배열 보통

Function SortArray(ArrayToSort() As String) 
    'your code 
End Function 

Sub CreateUniquesList() 
    Dim References() As String 
    '... 
    SortArray References 'lose the parentheses 
    '... 
End Sub 
0

있는지 확인하기 위해 괄호를 추가 (내가 항상 말하고 싶지만하지만 5 참조를 게시 할 것입니다 누군가가 항상 아니다 방법을 보여줍니다) 함수가 반환하는 값. 함수 정의에는 다음과 같이 반환 할 변수 유형이 포함되어야합니다.

Function SortArray(ArrayToSort As String) as variant 

변형은 결과로 정렬 된 배열을 포함합니다.

나서 함수의 끝에는

Next x 
SortArray = ArrayToSort 
End Function 

같이, 결과의 함수 자체의 값을 설정하고, 호출하는 경우와 같이 함수에 변수 동일한 세트 in

References = SortArray References 

그리고 그렇게해야합니다. 나는 또한 당신이 심판하여 값을 전달하지 않는 것이 좋습니다 것

, 그래서

Function SortArray(byval ArrayToSort As String) 

원래 배열 실제로 혼란에 기능을하지 (보통) 때문.

+0

나는 당신이 말하는 것이 좋지만 일부는 잘못 되었기 때문에 downvoted. 그는 배열로 작업하려고하기 때문에 전달 된 변수를 배열로 만들어야합니다. 괄호가 필요했습니다. 또한 배열은 Variant로 전달 (및 수신)되지 않으면 ByVal을 전달할 수 없습니다. – MacroMarc