Может кто-нибудь, пожалуйста, намекнуть на то, что я могу делать неправильно здесь? На данный момент я эффективно пытаюсь сделать команду Ctrl-A, чтобы сделать выбор в блоке данных в vba. Затем я хочу, чтобы этот выбор сохранялся как диапазон, чтобы я мог использовать его позже.Выбор параметра в качестве диапазона
Dim rngAdData As Range
.....
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set rngAdData = Selection
Range(rngAdData).AdvancedFilter Action:=xlFilterInPla.... //<----
Последняя строка дает мне run-time error '1004': Method 'Range' of object 'Global' failed
Когда я делаю это следующим образом, она работает
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).AdvancedFilter Action:=xlFilterInPla....
Но делать это таким образом, является громоздкой, потому что мне нужно использовать этот диапазон еще раз здесь
With ActiveWorkbook.Worksheets("....").Sort
.SetRange Range(Selection) //<---
Указанная линия дает мне такую же ошибку.
вы взорвали его для меня широко, спасибо большое. прошло уже со времени моего последнего проекта vba. хотя и крошечный вопрос, являются ли утверждения '.Select' плохими? – mango
@mango Они медленные и ненадежные. Вы гораздо лучше говорите, что хотите только в коде, а не полагаетесь на изменения в позиции курсора. Вы не будете уязвимы для того, чтобы кто-то щелкнул мышью в середине исполнения и все испортил. Это также приводит к тому, что экран меняется, что тоже медленно. – Brad