【问题标题】:Excel VBA sort array functionExcel VBA排序数组函数
【发布时间】:2017-05-20 03:58:44
【问题描述】:

我已经编写了下面显示的函数。当我在 Sub 中使用它时它可以工作。这是我第一次尝试编写函数。我知道这是一个菜鸟问题,但是我似乎无法运行该功能。这可能是关于没有正确调用函数或者没有正确定义函数头中的变量

谁能指点我正确的方向。

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

【问题讨论】:

  • 你想用代码做什么,它没有做什么?看起来您正在对同一个数组进行比较,当一个较大时,将它们切换。本质上是升序?
  • 该函数应该按字母顺序对数组进行排序。就像我上面说的,这适用于 Sub。我以前从未编写过函数,所以我不确定这是否是将代码实现为函数的正确方法。本质上,函数中的代码与 Sub 中的代码相同,所以我不确定我哪里出错了
  • 您可以将其设为 Sub,因为您的 Function 没有返回任何内容...

标签: vba excel


【解决方案1】:

添加括号以确保参数是一个数组

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

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

【讨论】:

    猜你喜欢
    • 2018-09-25
    • 2012-05-04
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多