创建空白Excel工作簿时,不使用所有1,000,000多行,文件大小会保持较小。但是,一旦将数据添加到所有行,即使从中删除数据,行仍然存在,从而导致巨大的文件大小。我知道这些行仍然存在,因为滚动条的大小以及如果我滚动到底部我最终会在1,000,000+行,这在新的工作簿上不会发生。我想这会在VBA中被称为UsedRange?
我从另一个开发者那里继承了一个工作手册,这是在这种情况下,我正在寻找一种减小尺寸的方法。我只能将使用过的数据复制到一个新的空白工作簿中,但有没有人知道减少实际UsedRange的方法?
以下代码不起作用:
Sub test()
Dim r As Range
Set r = Range("10000:1000000")
r.Delete
End Sub
也不会手动突出显示行,单击标题并单击删除
答案 0 :(得分:1)
打开VBA并在即时窗口中键入ActiveSheet.UsedRange。
我将它添加到我的右键菜单中,因为我经常使用它。
编辑:
以下是我用来将其添加到上下文菜单中的代码:
Private Sub Auto_Open()
On Error Resume Next
'delete the control if it exists
Application.CommandBars.FindControl(Tag:="MY_TAG").Delete
On Error GoTo 0
With Application.CommandBars("Cell").Controls
'add reset range button
With .Add(Type:=msoControlButton)
.Caption = "Reset used range"
.OnAction = ThisWorkbook.Name & "!ResetRange"
.Tag = "MY_TAG"
.BeginGroup = True
End With
End With
End Sub
Private Sub ResetRange()
ActiveSheet.UsedRange
End Sub
答案 1 :(得分:0)
清除所有工作表中所有未使用的行和列:
MappingSchema.SetDataType(typeof(TimeSpan), DataType.NText);