2014-04-07 48 views
0

我想創建一個VBA函數,它接受範圍,鍵和索引,並根據索引位置返回一個值。在VBA Excel中排序範圍和存儲結果

代碼如下所示。

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結果。代碼有什麼問題?

+0

目前尚不清楚你的功能應該做什麼。順便說一句,你打算用它像udf:'= SortRange(「A1:C100」,1,2)'? –

回答

0

這裏似乎有很多錯誤,或者至少是很多可能出錯的東西。

首先也是最重要的一點,如果你把這稱爲工作表函數,那麼永遠不會工作。 UDF不能操縱工作表對象(.Sort方法操縱工作表)。

此外,雖然你指出函數接受一個範圍,一個鍵(字符串?)和索引(整數/長?),你的函數接受兩個範圍參數和第三個非類型變體,它似乎是一個工作表對象基於稍後致電position.Cells。因此,該函數似乎並不接受您期望接受的參數,這可能會導致不匹配錯誤。

下也是潛在的錯誤:

  • 如果position不是一個工作表對象,你會得到一個錯誤,如果hasil不是全局(對象不支持此屬性或方法)
  • 可變的,或者沒有被實例化,你會得到一個錯誤(對象變量或與塊未設置)

這是不完全清楚你正在嘗試做的,但可能是VLOOKUPINDEX和/或MATCH函數已經可以完成您正在嘗試的操作。