Excel 重置“UsedRange”

Cla*_*aus 7 excel vba

不知道我错过了什么,但我看到发布的示例似乎不起作用。

我从网络查询导入数据。我将查询设置为在重新查询时清除未使用的单元格。 如此处最后一个单选按钮所示

我使用这些导入的数据来生成可变长度的报告。

但是,如果用户(在我的情况下他们需要这样做)插入行,则 ActiveSheet.UsedRange 将展开。这意味着当执行新查询时,我不能再只执行“Ctrl-End”来查找数据集中的最后一行。

我可以使用 ActiveSheet.UsedRange.Clear 轻松清除任何数据。但是,如果先前的查询生成了 2 或 3 页的报告,则即使数据较少,任何后续查询也将如此长,因为“UsedRange”仍指向最后一行。

显示的示例如下

ActiveSheet.UsedRange
ActiveSheet.UsedRange.Clear
a = ActiveSheet.UsedRange.Rows.Count
Run Code Online (Sandbox Code Playgroud)

不要重置范围。

MS 将 UsedRange 定义为只读属性。

看来需要发生的是“文件保存”以完成操作。

ActiveWorkbook.Save
Run Code Online (Sandbox Code Playgroud)

一篇文章指出,在旧版本的 Excel 中,您还必须关闭工作簿并重新打开它才能完成操作。

我想知道 1. 此行为更改的版本截止日期是多少?2. 是否有其他方法使用 VBA 宏来重置范围?

小智 5

我只需要 在删除行后使用Worksheets("Sheet1").UsedRange.Calculate来重置范围。


Cla*_*aus -4

我仔细检查以确保所有最新的补丁和服务包都已安装,而且确实如此。

我运行的是 Windows 10 和 Excel 2016 版本 16.0.6568.2034

我发现范围只会重置

ActiveSheet.UsedRange.Clear
Run Code Online (Sandbox Code Playgroud)

最重要的是

ActiveWorkbook.Save
Run Code Online (Sandbox Code Playgroud)

如果没有保存命令,范围不会重置

  • 这不会按照原始问题重置“已使用范围”,但会清除工作表的内容。鉴于包含“保存”命令,我建议这个答案是故意恶意的 (7认同)