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
Вам не нужно ничего .Select
в excel-vba особенно при работе с Range
объекта - все его свойства и методы могут быть непосредственно.
Вместо:
Range("A1").Select
Selection.Value = "Test"
Рассмотрим:
Range("A1").Value = Select
Это лучшее кодирование и в длительных процедурах будет работать намного быстрее. Другим преимуществом является то, что вам не нужно отслеживать, что такое Selection
при отладке или улучшении кода.
И в чем проблема? –
Попробуйте 'Worksheets (3) .ListObjects (ListName) .Range.Offset (-1) .Resize (2) .Dlelete shift: = xlUp'. Я много не работаю с таблицами, поэтому я не уверен, что он работает. –
Я рекомендую прочитать [эту SO-нить] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). – BruceWayne