不知道我错过了什么,但我看到张贴的例子似乎不起作用。
我从web查询中导入数据。在重新查询时,我将查询设置为清除未使用的单元格。
我使用这些导入的数据来生成一个可变长度的报告。
但是,如果用户(在我的情况下需要这样做)插入行,那么ActiveSheet.UsedRange将被展开。这意味着,当执行新的查询时,我再也不能只执行"Ctrl-End“来查找数据集中的最后一行。
我可以使用ActiveSheet.UsedRange.Clear轻松清除任何数据。但是,如果前面的查询生成了2或3页的报告,那么即使数据较少,后续的任何查询也会很长,因为"UsedRange“仍然指向最后一行。
下面的例子如下
ActiveSheet.UsedRange
ActiveSheet.UsedRange.Clear
a = ActiveSheet.UsedRange.Rows.Count
不要重置范围。
MS将UsedRange定义为readOnly属性。
它似乎需要发生的是一个“文件保存”,以完成操作。
ActiveWorkbook.Save
有一篇文章指出,在较早版本的Excel中,您还必须关闭工作簿并重新打开它才能完成操作。
我想知道1.这个行为改变的版本截止点是什么? 2.是否有其他方法使用VBA宏来重置范围?
发布于 2016-03-10 12:17:59
我反复检查以确保所有的最新补丁和服务包已经安装完毕,而且它们已经安装完毕。
我正在运行Windows 10和Excel 2016版本16.0.6568.2034
我发现范围只会用
ActiveSheet.UsedRange.Clear
最重要的是
ActiveWorkbook.Save
如果没有保存命令,范围就不会重置。
发布于 2019-02-21 14:02:40
我只需要在删除行后使用Worksheets("Sheet1").UsedRange.Calculate来重置范围。
发布于 2018-02-16 13:52:14
为我工作的最佳代码:
Sub DeleteUnused()
Dim myLastRow As Long
Dim myLastCol As Long
Dim dummyRng As Range
Dim AnyMerged As Variant
'http://www.contextures.on.ca/xlfaqApp.html#Unused
'Helps to reset the usedrange by deleting rows and columns AFTER your true used range
'Check for merged cells
AnyMerged = ActiveSheet.UsedRange.MergeCells
If AnyMerged = True Or IsNull(AnyMerged) Then
MsgBox "There are merged cells on this sheet." & vbCrLf & _
"The macro will not work with merged cells.", vbOKOnly + vbCritical, "Macro will be Stopped"
Exit Sub
End If
With ActiveSheet
myLastRow = 0
myLastCol = 0
Set dummyRng = .UsedRange
On Error Resume Next
myLastRow = _
.Cells.Find("*", after:=.Cells(1), _
LookIn:=xlFormulas, lookat:=xlWhole, _
searchdirection:=xlPrevious, _
searchorder:=xlByRows).Row
myLastCol = _
.Cells.Find("*", after:=.Cells(1), _
LookIn:=xlFormulas, lookat:=xlWhole, _
searchdirection:=xlPrevious, _
searchorder:=xlByColumns).Column
On Error GoTo 0
If myLastRow * myLastCol = 0 Then
.Columns.Delete
Else
.Range(.Cells(myLastRow + 1, 1), _
.Cells(.Rows.Count, 1)).EntireRow.Delete
.Range(.Cells(1, myLastCol + 1), _
.Cells(1, .Columns.Count)).EntireColumn.Delete
End If
End With
End Sub
https://stackoverflow.com/questions/35751754
复制相似问题