使用 vba 编写函数,如果想要获取函数所在单元格的列号(行号),可以考虑以下办法:
1、使用参数传递
即在编写函数时,手动将当前单元格传递过去。
Function myfunction1(rng As range)
myfunction = rng.Row & "," & rng.Column
End Function
2、用 ActiveCell 属性
Function myfunction2()
myfunction = ActiveCell.Row & "," & ActiveCell.Column
End Function
3、调用 ThisCell 属性
Function myfunction3()
myfunction = Application.ThisCell.Address
'Application.ThisCell.Column 列号
End Function
下面的函数返回单元格地址,给你参考下
Function myAddr()
myAddr?=ActiveWorkbook.Application.ThisCell.Address
End?Function将返回运行自定义函数的单元格的地址
所以可以用
Dim rC As Range
Set rC=ActiveWorkbook.Application.ThisCell这样rC的行/列号就可以使用了,注意这样的自定义函数是可以随意拖动的。
楼主当然明白,由于是属于VBA的自定义函数,需要触发才能更新,按F9或,在Excel设定为自动重算的前提下有单元格的数据发生变化而触发重算时或,在Excel设定为保存时重算并且操作者执行了保存是,才会更新自定义函数的数据。
Function my(myPath As String, rowNumber As Single, columnNumber As Single)Workbooks.Open (myPath)my = Workbooks(2).Worksheets(1).Cells(rowNumber, columnNumber)End Function