我对VBA很新。我想用vba函数来实现以下目的:
Sheet1:
年----- | - 1 - | - 2 - | - 3 - |
收入| 10美元| 20美元| 30美元|
Sheet2:
年------ | 1 | 2 | 3 |
收入| X | Y | Z |
收入是指定的单元格。使用excel函数,我可以将每年的收入链接到工作表2或任何其他工作表上的单元格X到Z:
=Offset(Revenue,0,column()-1)
我希望在VBA功能中实现相同的功能,将公式缩短为Obtain(Revenue)。这是我到目前为止所提出的:
在VBA中:
Function Obtain(Account As Range)
Dim i As Integer
i = ActiveCell.Column - Account.Column
Obtain = Account.Offset(0, i).Value
End Function
在单元格X中:
=Obtain(Revenue)
虽然它几乎与公式版本相同,但是当我从X复制公式并将其粘贴到同一行的Y和Z时,我遇到了问题。我得到的是10美元,10美元,10美元,而不是10美元,10美元,10美元,因为Active.Cell已经被卡住了#34;到X,除非我移动鼠标光标并按Enter键为Y和Z中的每个功能刷新ActiveCell。我该怎么做才能获得VBA功能,这样当我将Obtain(Revenue)复制并粘贴到其他单元格时,excel知道我指的是哪一年的收入?
谢谢!
答案 0 :(得分:2)
要检测细胞参考,您需要使用Application.Caller
:
Function Obtain(Account As Range)
Dim i As Integer
i = Application.Caller.Column - Account.Column
Obtain = Account.Offset(0, i).Value
End Function