Страницы: 1
RSS
Как присвоить переменной адрес несмежного диапазона
 
Подскажите, как продолжить макрос. Идея в следующем: Макрос выбирает на листе через автофильтр только белые ячейки, выделяет через "выделить ячейки", выделить только видимые, далее выделенный диапазон заносится в переменную. В другом файле копируются значения с аналогичного листа ячеек выделенного ранее диапазона и вставляются в исходную книгу значениями с форматированием исходного файла.

Застрял именно на присвоении переменной и использовании выделенного диапазона в другой книге

P.S. код - часть другого большого кода, поэтому могут быть лишние переменные/действия
Код
'  -------------------------------------------------------------
    Dim iReport As Workbook, iPath$
    Dim i&, sht As Worksheet, lRow&, iRow&, lColumn&, iColumn&
    Dim book As Workbook, Filial$
    Dim nSheet As Integer, mSheet
    Dim postfix&
'  -------------------------------------------------------------
    Application.ScreenUpdating = False
    Set iReport = ActiveWorkbook
    For postfix = 99 To -1 Step -1
    iPath = iReport.Path & "\" & iReport.Worksheets("ЦО").Cells(2, 1).Value & "\от филиала\" & iReport.Worksheets("ЦО").Cells(2, 1).Value & "_отчет _июнь_" & Format$(postfix, "00") & ".xls*"
    If Len(Dir(iPath)) Then Set book = Workbooks.Open(iPath): Exit For
    If postfix = -1 Then MsgBox "Файл отсутствует": iReport.Worksheets("ЦО").Range("E2").Value = "Файл отсутствует": Exit Sub
    Next
    Set sht = iReport.Worksheets("ЦО")
    For nSheet = 2 To 11
    mSheet = iReport.Worksheets("ЦО").Cells(nSheet, 9)
    iReport.Worksheets(mSheet).Activate
    Range("B9:XFD1048576").Select
    Selection.AutoFilter
    ActiveSheet.Range("$B$9:$T;1048576").AutoFilter Field:=5, Criteria1:=RGB(242, _
        242, 242), Operator:=xlFilterCellColor
    Range("F10:T1048576").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
 
Это?
Код
    Set iRng = Range("F10:T1048576").SpecialCells(xlCellTypeVisible)
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Попробовал, получаю ошибку type mismatch
Код
Set irng = Range("F10:T1048576").SpecialCells(xlCellTypeVisible).Select
    book.Worksheets(mSheet).irng.Select
 
А где Вы у меня Select увидели?
Согласие есть продукт при полном непротивлении сторон
 
И вообще, на будущее
SELECT И ACTIVATE - ЗАЧЕМ НУЖНЫ И НУЖНЫ ЛИ?
Согласие есть продукт при полном непротивлении сторон
 
Sanja, Действительно. От этой ошибки ушли. Теперь не понятно, как выделить (или скопировать) полученный диапазон из другого файла.
 
Этот вопрос выходит за рамки названия Темы.
Для начала попробуйте в принципе скопировать несмежный диапазон. Просто, руками, без VBA
Согласие есть продукт при полном непротивлении сторон
 
Sanja, скопировать несмежный диапазон то проблемы нет. А вот вставить его также.. Значит то, чего я хочу невозможно, правильно? Тогда буду искать обходные пути :)
 
Цитата
Giltis написал: Тогда буду искать обходные пути
Один из них - забирать ЗНАЧЕНИЯ из нужного диапазона в массив и уже его вставлять в нужное место. Но это уже совсем другая история...
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Один из них - забирать ЗНАЧЕНИЯ из нужного диапазона в массив и уже его вставлять в нужное место. Но это уже совсем другая история...
Можно немного подробнее об этом способе? :)
 
Giltis, Вы хотите скопировать несмежный диапазон и вставить его так же в несмежный? Речь, случаем, не о копировании отфильтрованных данных и вставке опять же в отфильтрованные?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Почти. Дело в том, что фильтр можно запустить только в исходном файле. В файле откуда копируется информация может быть изменено оформление и точно будут заполнены данные. Также отфильтровать не получится. Нужно копировать именно по тому фильтру, который будет в исходном файле
 
Ну вот Вы написали и я вообще не понял что и как надо копировать и вставлять. Вменяемое какое-то объяснение проблемы есть? :)
Могу пока предложить только это: Как вставить скопированные ячейки только в видимые/отфильтрованные ячейки
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ответ на вопрос в заголовке:
Код
Dim AdrStr$, MyRange as Range
set MyRange = Union(cells(1,1), cells(3,2), Range("C10, AA1:AA9"))
AdrStr = MyRange.Address
в этом примере переменной AdrStr присвоен адрес диапазана (причем по-барабану смежный он или нет)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх