Vba 方法返回对调用工作表/单元格的引用
我有一个方法可以从工作表上的表列执行不同的结果 该方法的结果将进入单元格中的数据验证列表框。我现在有两个需求,需要通过限制传递给该方法的列数来“虚拟缓解”该方法的使用。这部分我可以完成,我想做的是,如果范围中有多个列,那么它会“吐”到用户身上,说明从“工作表”“单元格”进行了非法函数调用,并提醒it支持解决问题 拿到工作表很好,也是最简单的部分。它更多的是获取对调用单元的引用,而无需明确地强制IT支持将单元作为值传递给方法 关于如何提取呼叫单元有什么想法吗 最终,此方法将在多个工作表中使用,以执行相同的逻辑,并将不同的范围传递给它 编辑时间:2012-09-24美国中部时间上午10:30 这是我到目前为止的实现,我还没有在其中使用Vba 方法返回对调用工作表/单元格的引用,vba,excel,excel-2010,Vba,Excel,Excel 2010,我有一个方法可以从工作表上的表列执行不同的结果 该方法的结果将进入单元格中的数据验证列表框。我现在有两个需求,需要通过限制传递给该方法的列数来“虚拟缓解”该方法的使用。这部分我可以完成,我想做的是,如果范围中有多个列,那么它会“吐”到用户身上,说明从“工作表”“单元格”进行了非法函数调用,并提醒it支持解决问题 拿到工作表很好,也是最简单的部分。它更多的是获取对调用单元的引用,而无需明确地强制IT支持将单元作为值传递给方法 关于如何提取呼叫单元有什么想法吗 最终,此方法将在多个工作表中使用,以执
应用程序.Caller
方法
Function UniqueValues(ws As Worksheet, col As String) As Variant
Dim rng As Range: Set rng = ws.Range(col)
Dim dict As New Scripting.Dictionary
If Not (rng Is Nothing) Then
Dim cell As Range, val As String
For Each cell In rng.Cells
val = CStr(cell.Value)
If Not dict.Exists(val) Then
dict.Add val, val
End If
Next cell
End If
'Return value
UniqueValues = dict.Items
End Function
此方法已在代码隐藏逻辑中使用。我将复制此逻辑,并将其作为我正在处理的Excel工作簿的应用程序.Volatile
段的一部分。将相似但不相同
这是当前的设计,不是很多,而是我正在使用的atm
Function DistinctValues(rng As Range)
Application.Volatile True
If rng.Columns.Count > 1 Then
Err.Raise -1542376, rng.Worksheet.name, "An invalid function call was made!"
End If
End Function
Application.Caller
返回调用函数的单元格。看看这个。我不太懂,但是Application.Caller
返回调用函数的单元格。显示一些实际代码怎么样?这将使你的问题更容易理解。@Douglancy Thanx,仍在学习2007+vba框架的精髓。@TimWilliams如果我确切地知道我将使用什么来反向引用调用单元格,那就太好了。我希望进行错误处理,并希望返回调用该方法的单元格,以便向最终用户提供准确(尽可能)的错误报告,以便向IT支持部门报告。正如Doug指出的,应用程序。调用者是您需要的。