excel vba中自定义一个函数,该函数需要用到函数所在的那个单元格的列号,如函数写在b5单元格

如题所述

使用 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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-10
下面的函数返回单元格地址,给你参考下
Function myAddr()
myAddr?=ActiveWorkbook.Application.ThisCell.Address
End?Function将返回运行自定义函数的单元格的地址
所以可以用
Dim rC As Range
Set rC=ActiveWorkbook.Application.ThisCell这样rC的行/列号就可以使用了,注意这样的自定义函数是可以随意拖动的。
楼主当然明白,由于是属于VBA的自定义函数,需要触发才能更新,按F9或,在Excel设定为自动重算的前提下有单元格的数据发生变化而触发重算时或,在Excel设定为保存时重算并且操作者执行了保存是,才会更新自定义函数的数据。
第2个回答  2017-06-10
Function my(myPath As String, rowNumber As Single, columnNumber As Single)Workbooks.Open (myPath)my = Workbooks(2).Worksheets(1).Cells(rowNumber, columnNumber)End Function
相似回答