Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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


Заранее огромное спасибо всем кто поможет.

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #1 Добавлено: 09.06.11 23:44
Select это не оператор, а метод. Selection это объект класса Range. Чтобы его получить, совсем необязательно выполнять метод Select

  1.    Dim wsforma As Worksheet
  2.    Dim myselection As Range
  3.    Set myselection = wsforma.Range("A10:H10")
  4.    myselection.ClearContents

Ответить

Номер ответа: 2
Автор ответа:
 Feniks



Вопросов: 1
Ответов: 5
 Профиль | | #2 Добавлено: 10.06.11 12:33
Спасибо большое но сори я все равно не догнал как исправить!((((

Ответить

Номер ответа: 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", и расширяется по нижней границе до конца значимых данных, потом выделенное удаляется.

  1.  
  2. Dim ws As Worksheet
  3. Dim rng1 As Range
  4. Set ws = Sheets("forma")
  5. Set rng1 = ws.Range("A10:H10")
  6. ws.Range(rng1, rng1.End(xlDown)).ClearContents


- Этот код делает тоже самое, не активизируя лист.

Ответить

Номер ответа: 4
Автор ответа:
 Feniks



Вопросов: 1
Ответов: 5
 Профиль | | #4 Добавлено: 10.06.11 23:39
Сори я дико извиняюсь(( За свою тупость.)) Но я не знаю VBA на том уровне как вы. Мой макрос это "Франкиштейн" которого я слепил из разных кусков кода. Так что мне 50% скидка))
Проблема возникает не на Sheets("forma";)
а здесь
  1. Worksheets("F1").Select
  2.     
  3.     ' Определение размера исходного диапазона данных.
  4.     FinalRow = Cells(65536, 1).End(xlUp).Row

[/source]

здесь остановка (ошибка) когда страница Worksheets("F1";) скрыта
Я хоть и тупой, но догоняю что она закономерна, я ведь перед этим пишу Worksheets("F1";).Select
но тут у меня ступор, а как без этого. Ну прям как в анекдоте -" Хозяйка а как без сурика! Без сурика (Select) нам нельзя!" Короче за последние 3 года это первый макрос.)))
Так что не пинайте сильно)) Ну так слегка))
Вот ваш код смотрю и все мне понятно (вру я сразу в него верю) а свой родить боюсь))

Ответить

Номер ответа: 5
Автор ответа:
 Feniks



Вопросов: 1
Ответов: 5
 Профиль | | #5 Добавлено: 10.06.11 23:52
здесь сам файл
http://narod.ru/disk/15639362001/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_01.xls.html

Ответить

Номер ответа: 6
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #6 Добавлено: 10.06.11 23:59
FinalRow = Worksheets("F1";).Cells(65536, 1).End(xlUp).Row

Ответить

Номер ответа: 7
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #7 Добавлено: 11.06.11 01:13
Глянул я твой файл. Надо так.
  1. Sub AllColumnsOneCustomer22()
  2.     Worksheets("forma").Range("A10:H65536").ClearContents
  3.     With Worksheets("f1")
  4.         .AutoFilterMode = False
  5.         .Rows(1).Hidden = True
  6.         .Range("1:1").AutoFilter
  7.         .Range("1:1").AutoFilter Field:=2, Criteria1:=Worksheets("forma").Range("D7"), VisibleDropDown:=True
  8.         .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy Worksheets("forma").Range("A10")
  9.         .AutoFilterMode = False
  10.     End With
  11. End Sub

Ответить

Номер ответа: 8
Автор ответа:
 Feniks



Вопросов: 1
Ответов: 5
 Профиль | | #8 Добавлено: 11.06.11 01:22
Кудесник я в шоке))
кидая счет в ЯД отгружу 5 юнотов)) (150р)
не много но на пивко с рыбкой хватит))

Ответить

Номер ответа: 9
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #9 Добавлено: 11.06.11 01:31
ЯД № 41001815304842
Ты ета, заходи, ежли чё. :)

Ответить

Номер ответа: 10
Автор ответа:
 Feniks



Вопросов: 1
Ответов: 5
 Профиль | | #10 Добавлено: 11.06.11 03:05
Ок спасибо)
отправил проверь)

Ответить

Номер ответа: 11
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #11 Добавлено: 11.06.11 03:25
Угу.

eugyx@yandex.ru
Любая задача, объясняемая "на-пальцах", решаема.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам