我试图在我的大型工作簿中添加一个自动宏,至少通过重置使用的范围来减少一些脂肪。
我尝试了很多代码,无法使其工作,也无法弄清楚原因。
(当我手动删除右边和底部的每一列,然后运行宏时,似乎工作了一些时间)
我尝试过短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
以及其他一些建议,但每次都会在我的数据表下面给我一些30k的单元格。
任何人都知道简单的万无一失的做法吗?建议一如既往地非常感谢,这个WB坐在70mb左右!
更新因为除非我手动删除行和列,否则我已经尝试了很多脚本来重置已使用的范围而没有成功,我决定不使用范围修改到最后一个活动行,我只是简单当用户保存时删除整个数据表(这会将文件大小从大约70mb减少到20mb!)。
非常感谢
答案 0 :(得分:1)
这对我有用,但运行大约需要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
答案 1 :(得分:0)
KeyError: "['5Thu' '7Sat'] not in index"
我在网上找到了这个地方(抱歉不记得),这对我有用
答案 2 :(得分:0)
看到我的问题的更新解释,决定这是最好的解决方案。 `
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`