2011-04-05 55 views
35

Excel單元格中怎樣才能在我的VBA函數被稱爲細胞?從一個函數被調用

換句話說,什麼是VBA相當於間接(ROW(),COLUMN())?

我是不是正在尋找ActiveCell

我想要做的是有一個簡單的功能ThisRow_Col(rColumn As String)返回它是從所謂的行的列X。在B2中說我呼叫= ThisRow_Col(「A」),它應該返回A2的值。無論哪個單元處於活動狀態,這都應該起作用

編輯:由於查爾斯的答案:Application.Caller。下面的代碼獲取當前行的列X,獨立的,其中的選擇是:

Function ThisRow_Col(rColumn As Range) 
    ' Return INDIRECT(rcolumn & ROW()) 

    ThisRow_Col = Application.Caller.Worksheet.Cells(Application.Caller.Row, rColumn.Column).Value 

End Function 

注意,通過列的範圍(ThisRow_Col(A1))比把它當作一個字符串更好,因爲Excel可以自動如果您移動或插入列,請更新公式。當然,1A1只是一個約定。

回答

57

Application.Caller返回從中調用UDF的範圍對象。

+2

很酷,我從來不知道。 +1 – phoog 2011-04-05 22:31:07

+2

@dandv,@phoog,這裏是一些關於Application.Caller的更多細節:http://stackoverflow.com/questions/3861431/vba-how-to-get-the-last-used-cell-by-vba -code - 當 - 的 - 最後的錯誤發生,在-AW/3874340#3874340 – jtolle 2011-06-02 14:22:01