Excel VBA 用户定义的函数:在 Sheet 函数中调用了获取单元格
Excel VBA User-Defined Function: Get Cell in Sheet Function was Called In
我在 Excel 中有一个用户定义的函数,我在多个 sheet 中 运行。我正在尝试使用 Cells(i, j)
在调用我的函数 的 sheet 中按行和列 提取单元格的值。相反,当我点击 'Calculate Now' 按钮时,Cells(i, j)
在 active sheet 中提取单元格 [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
您需要使用Application.Caller。
这将return sheet 函数的单元格 A1 中的值输入到:
Public Function DisplayCaller() As String
DisplayCaller = Application.Caller.Parent.Cells(1, 1)
End Function
这将return呼叫者的名字sheet:
Public Function DisplayCaller() As String
DisplayCaller = Application.Caller.Parent.Name
End Function
我在 Excel 中有一个用户定义的函数,我在多个 sheet 中 运行。我正在尝试使用 Cells(i, j)
在调用我的函数 的 sheet 中按行和列 提取单元格的值。相反,当我点击 'Calculate Now' 按钮时,Cells(i, j)
在 active sheet 中提取单元格 [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
您需要使用Application.Caller。
这将return sheet 函数的单元格 A1 中的值输入到:
Public Function DisplayCaller() As String
DisplayCaller = Application.Caller.Parent.Cells(1, 1)
End Function
这将return呼叫者的名字sheet:
Public Function DisplayCaller() As String
DisplayCaller = Application.Caller.Parent.Name
End Function