无法重置使用的范围

我试图添加一个自动macros到我的非常大的工作簿,至less通过重置使用的范围修剪一些脂肪。 我已经尝试了很多代码,不能得到它的工作,不知道为什么。 (这似乎工作了几次,当我手动删除每一列的权利和底部,然后运行macros)我已经尝试了短的ActiveSheet.UsedRange

Dim sht As Workshet Dim lng As Long For Each sht In ActiveWorkbook.Worksheets lng = sht.UsedRange.Rows.Count Next


Dim x As Long Dim y As Long x = ActiveSheet.UsedRange.Rows.Count y = ActiveSheet.UsedRange.Columns.Count

还有一些其他的build议,但是每次都会在我的数据表下面给我几个30k的单元格。

任何人都知道这样做的简单肯定的方式? build议非常感谢一如既往,这个世界银行坐在70mb左右!

更新因为我已经尝试了很多脚本来重置使用的范围,除非我手动删除行和列,所以我决定不用修剪使用范围到最后一个活动行,我将在用户保存时简单地删除整个数据表这已经将文件大小从大约70mb减less到20mb!)。

非常感谢

这适用于我,但需要大约20秒的时间来运行:

 Sub resetter() Dim N As Long, i As Long With Application.WorksheetFunction N = Rows.Count For i = N To 1 Step -1 If .CountA(Cells(i, 1).EntireRow) <> 0 Then Exit For Next i Range(Cells(N, 1), Cells(i + 1, 1)).EntireRow.Delete N = Columns.Count For i = N To 1 Step -1 If .CountA(Cells(1, i).EntireColumn) <> 0 Then Exit For Next i Range(Cells(1, N), Cells(1, i + 1)).EntireColumn.Delete End With End Sub 
 Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For Each Sh In ThisWorkbook.Worksheets x = Sh.UsedRange.Rows.Count Next Sh End Sub 

我在网上find了这个地方(抱歉不记得),它为我工作

看到更新我的问题的解释,决定这是最好的解决scheme。 `

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim lng As Long, sht As Worksheet Application.ScreenUpdating = False On Error Resume Next Application.DisplayAlerts = False Sheets("data").Range("denialstable1").Delete Application.DisplayAlerts = True For Each sht In ActiveWorkbook.Worksheets lng = sht.UsedRange.Rows.Count Next Application.ScreenUpdating = True End Sub`