Страница: 1 |
|
Вопрос: Select - помогите избавиться!
|
Добавлено: 09.06.11 23:13
|
|
Автор вопроса: Feniks
|
Макрос выполняется на 2 листах с использованием оператора Select
Требуется скрыть лист (F1)
Проблема.
При скрытом листе выходит ошибка, причина использование оператора Select, ну и понятно код частично писался Рекордером((.
В силу не искушенности в программировании, не могу побороть проблему.
Помогите пожалуйста люди добрые
Sub AllColumnsOneCustomer22()
Dim IRange As Range
Dim ORange As Range
Dim CRange As Range
Dim vFindData 'переменная для поиска
Dim FinalRow
Dim NextCol
vFindData = Sheets("forma").Range("D7")
Application.ScreenUpdating = False 'отменить обновление экрана
' Очистить лист forma.
Sheets("forma").Select
Range("A10:H10").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.ClearContents
' Выделить рабочий лист.
Worksheets("F1").Select
' Определение размера исходного диапазона данных.
Worksheets("F1").FinalRow = Cells(65536, 1).End(xlUp).Row
NextCol = Cells(1, 255).End(xlToLeft).Column + 2
' Определение столбца, по которому будет проводиться фильтрация.
Cells(1, NextCol).Value = Range("B1").Value
' В действительности, значение CDE INC. должно
' вводиться посредством пользовательской формы.
Cells(2, NextCol).Value = vFindData
Set CRange = Cells(1, NextCol).Resize(2, 1)
' Определение целевого диапазона данных (пустая ячейка).
Set ORange = Cells(1, NextCol + 2)
' Определение исходного диапазона данных.
Set IRange = Range("A1").Resize(FinalRow, NextCol - 2)
' Применение расширенного фильтра для отбора строк,
' удовлетворяющих заданному условию.
IRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CRange, CopyToRange:=ORange
' Range("L1").Select
Range("K2:Q2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("forma").Select
Range("A10").Select
ActiveSheet.Paste
' Выделить рабочий лист.
Worksheets("F1").Select
' Очистить результат предыдущего выполнения макроса.
Range("I1:AZ1").EntireColumn.Delete
' Выделить рабочий лист.
Sheets("forma").Select
Range("H10").Select
Application.ScreenUpdating = True 'разрешить обновление экрана
End Sub
Заранее огромное спасибо всем кто поможет.
Ответить
|
Номер ответа: 1 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #1
|
Добавлено: 09.06.11 23:44
|
Select это не оператор, а метод. Selection это объект класса Range. Чтобы его получить, совсем необязательно выполнять метод Select-
- Dim wsforma As Worksheet
- Dim myselection As Range
- Set myselection = wsforma.Range("A10:H10")
- myselection.ClearContents
Ответить
|
Номер ответа: 3 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #3
|
Добавлено: 10.06.11 17:52
|
Вот ведь блин! Влом мне переписывать макрос, не имея перед глазами реальных данных в excel.
Но ты сам посмотри, зачем же нужен SELECT.
Sheets("forma" .Select
Range("A10:H10" .Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
- что это у тебя делает? На листе "forma" выделяется регион "A10:H10", и расширяется по нижней границе до конца значимых данных, потом выделенное удаляется.
-
- Dim ws As Worksheet
- Dim rng1 As Range
- Set ws = Sheets("forma")
- Set rng1 = ws.Range("A10:H10")
- ws.Range(rng1, rng1.End(xlDown)).ClearContents
- Этот код делает тоже самое, не активизируя лист.
Ответить
|
Номер ответа: 7 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #7
|
Добавлено: 11.06.11 01:13
|
Глянул я твой файл. Надо так.
- Sub AllColumnsOneCustomer22()
- Worksheets("forma").Range("A10:H65536").ClearContents
- With Worksheets("f1")
- .AutoFilterMode = False
- .Rows(1).Hidden = True
- .Range("1:1").AutoFilter
- .Range("1:1").AutoFilter Field:=2, Criteria1:=Worksheets("forma").Range("D7"), VisibleDropDown:=True
- .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy Worksheets("forma").Range("A10")
- .AutoFilterMode = False
- End With
- End Sub
Ответить
|
Номер ответа: 11 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #11
|
Добавлено: 11.06.11 03:25
|
Угу.
eugyx@yandex.ru
Любая задача, объясняемая "на-пальцах", решаема.
Ответить
|
Страница: 1 |
Поиск по форуму