Excel VBA用户定义的函数:在单元格函数中获取单元格被调用

时间:2015-06-23 16:08:28

标签: excel vba excel-vba user-defined-functions

我在Excel中有一个用户定义的函数,我在多个工作表中运行。我正在尝试使用Cells(i, j)在我的函数调用的表格中按行和列来提取单元格的值。相反,当我点击“立即计算”按钮时,Cells(i, j)会拉出活动工作表中的单元格[i,j]的值,并且自动计算不起作用。

我做错了什么?

完整功能如下,不确定是否需要回答我的问题。

Option Explicit
Option Base 1
Option Compare Text

Function recordString(ByVal width As Integer, ByVal height As Integer, ByVal firstCell As Range) As String
    Application.Volatile

    Dim tempString As String
    tempString = ""
    Dim i As Integer
    Dim j As Integer
    For i = firstCell.Row To firstCell.Row + height - 1
        For j = firstCell.Column To firstCell.Column + width - 1
            If IsEmpty(Cells(i, j)) Then
                tempString = tempString & "0"
            Else
                tempString = tempString & "1"
            End If
        Next j
    Next i
    recordString = tempString
End Function

1 个答案:

答案 0 :(得分:1)

您需要使用Application.Caller。

这将返回函数输入的工作表的单元格A1中的值:

Public Function DisplayCaller() As String

    DisplayCaller = Application.Caller.Parent.Cells(1, 1)

End Function

这将返回呼叫表的名称:

Public Function DisplayCaller() As String

    DisplayCaller = Application.Caller.Parent.Name

End Function

了解更多信息:
http://www.cpearson.com/excel/sheetref.htm