如何在没有select的情况下更改到删除范围
我尝试了所有在我脑海中重写这段代码而没有select部分的东西。
Worksheets(3).Activate ActiveSheet.ListObjects(ListName).Range.Select 'Listname is a string-variable Range(ActiveCell.Offset(1), ActiveCell.Offset(-1)).Select Selection.Delete Shift:=xlUp Worksheets(2).Activate MsgBox "Set-creation was canceled.", vbCritical
Worksheets(3).Activate ActiveSheet.ListObjects(ListName).Range.Select 'Listname is a string-variable Range(ActiveCell.Offset(1), ActiveCell.Offset(-1)).Select Selection.Delete Shift:=xlUp Worksheets(2).Activate MsgBox "Set-creation was canceled.", vbCritical
可以重写为:
With Sheets(3) .Range(.ListObjects(ListName).Range.Offset(1), .ListObjects(ListName).Range.Offset(-1)).Delete xlUp End With Sheets(2).Activate MsgBox "Set-creation was canceled.", vbCritical
你不需要在excel-vba中select任何东西,特别是在处理一个Range
对象的时候 – 所有的属性和方法都可以被直接访问。
代替:
Range("A1").Select Selection.Value = "Test"
考虑:
Range("A1").Value = Select
这是更好的编码,而且长时间运行会更快。 另一个好处是,在debugging或改进代码时,不必跟踪Selection
内容。