Страницы: 1
RSS
VBA: Макрос для реализации DrillDown не выдает запрашиваемые данные, Макрос для реализации DrillDown (проваливание как в 1С/сводной таблице) устанавливает фильтр, но отфильтрованные значения не отбираются
 
Добрый день, дорогие друзья!

Столкнулась с тем, что макрос для реализации DrillDown не выдает запрашиваемые данные.

Внесла в книгу макрос, которым предполагалось фильтровать данные из реестра (плоской таблицы) путем "проваливания" из отчета. Т. е. как в сводной таблице можно провалиться и посмотреть из чего рассчитан конкретный показатель, так и здесь предполагается аналогичное.

Самое интересное, что никаких ошибок не выдает, фильтр проставляется, но значения не показываются.

Прошу помочь понять, где именно я допустила ошибку в макросе? Или может не в макросе, а где-то ещё?

Файл прикладываю. Для вызова макроса и воспроизведения ошибки перейдите на вкладке "ОДДС", встаньте на ячейку с рассчитанными значениями и нажмите "Детализация".

Заранее спасибо!
Изменено: silmargarian - 23.02.2024 17:20:06
 
ДД. Вроде так
Код
Sub DrillDown()
    Dim R&, C&
    C = ActiveCell.Column
    R = ActiveCell.Row
    If (C < 4) Or (C > 15) Or (R < 6) Or (R > 66) Then
        MsgBox ("Выбери ячейку!")
    Else
        Sheets("Реестр_ДДС").Activate
        With ActiveSheet.AutoFilter
          .Range.AutoFilter Field:=4, Criteria1:=Sheets("ОДДС").Cells(R, 3).Value
          .Range.AutoFilter Field:=7, Criteria1:=C - 3 'Format(R - 3, "00")
        End With
    End If
End Sub
 
testuser, Просто гениально!

Вообще не подумала, что можно так сделать.

Спасибо большое!  :D  
 
silmargarian здравствуйте. Еще можно так. сделать
Код
Sub DrillDown()
    Dim R&, C&, Rg1 As Range
    Set Rg1 = Sheets("Реестр_ДДС").Range("$A$3")
    Rg1.Parent.AutoFilterMode = False
    C = ActiveCell.Column
    R = ActiveCell.Row
    If (C < 4) Or (C > 15) Or (R < 6) Or (R > 66) Then
        MsgBox ("Выбери ячейку!")
    Else
        With Rg1.EntireRow
          .AutoFilter 4, Cells(R, 3).Value
          .AutoFilter 7, C - 3
        End With
    End If
    Application.Goto Rg1
End Sub
Страницы: 1
Наверх