在VBA Excel中对范围和存储结果进行排序

时间:2014-04-07 15:19:44

标签: excel vba excel-vba

我想创建一个接受范围,键和索引的VBA函数,并根据它的索引位置返回一个值。

代码看起来像这样。

Function SortRange(datarange As Range, mycolumn As Range, position)
    Dim theResult As Range

    Set theResult = hasil.Sort(Key1:=kolom, order1:=xlAscending, Header:=xlNo)

    SortRange= position.Cells(nomorurut, 1)
End Function

但是,我总是得到#VALUE结果。代码有什么问题?

1 个答案:

答案 0 :(得分:0)

这里似乎有很多错误,或者至少有很多潜在的错误。

首先也是最重要的是,如果您将其称为工作表函数,则永远不会工作。 UDF无法操作工作表对象(.Sort方法操纵工作表)。

当你指示函数接受一个范围,一个键(字符串?)和索引(整数/长?)时,你的函数接受两个范围参数和一个第三个未打字的变量,它似乎是一个基于对象的工作表在后来打电话给position.Cells。因此,该函数似乎不接受您希望它接受的参数,这可能会导致不匹配错误。

以下也是潜在的错误:

  • 如果position不是工作表对象,则会收到错误(对象不支持此属性或方法)
  • 如果hasil不是全局变量,或者尚未实例化,则会收到错误(对象变量或未设置块)

您尝试做的事情并不完全清楚,但VLOOKUPINDEX和/或MATCH函数可能已经完成了您的尝试。