Microsoft 电子表格软件系列,其中包含用于分析、绘制图表和传达数据的工具。
( 免责声明:此信息由自动翻译工具翻译;我们力求准确,但翻译可能无法完全反映原文的含义、上下文或意图。)
您好,RIPCC
工作表支持 CurrentRegion 函数,但当在直接从工作表单元格调用的 VBA 用户自定义函数 (UDF) 中使用它时,其行为可能会有所不同。这与在 VBE 的普通子程序中运行函数的执行上下文不同,CurrentRegion 是与范围相关的函数之一,在这种情况下可能会产生不可靠的结果。CurrentRegion 不能用于受保护的工作表。
以下是一些建议:
建议您避免在工作表 UDF 中使用 CurrentRegion 函数。您可以像之前使用 .End(xlToRight) 或 .End(xlUp) 那样,显式地计算最后一行和最后一列。当函数输入到单元格中时,这种方法通常更稳定。
例如,可以使用如下逻辑:
Dim lastRow As Long
Dim lastCol As Long
Dim DataRange As Range
lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
lastCol = ws.Cells(3, ws.Columns.Count).End(xlToLeft).Column
Set DataRange = ws.Range(ws.Cells(3, "D"), ws.Cells(lastRow, lastCol))
此外,请确保工作表未受保护,因为文档中指出 CurrentRegion 函数在受保护的工作表上无法正常工作。
如果自定义函数 (UDF) 依赖于工作表中的单元格,最好将这些单元格区域作为参数传递给函数,而不是让函数自行搜索工作表。Excel 在能够从公式中识别出依赖单元格时,可以更可靠地重新计算 UDF。
因此,我不认为这是“Excel 工作表公式普遍不支持 CurrentRegion”的问题。更准确地说,在工作表自定义函数 (UDF) 中使用 CurrentRegion 并不是一个好选择。使用显式的范围边界才是更安全的解决方法。
感谢您耐心阅读,希望这些信息对您有所帮助。
若本回答对您有帮助,请点击“接受答案”并给予好评。若对本回答有其他疑问,请点击“评论”。
注:若需接收本讨论串的相关邮件通知,请按[我们的文档]指引启用邮件通知功能。