如何在没有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内容。