Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/функция которая скрывает данные фильтра - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » функция которая скрывает данные фильтра (Макросы Sub)
функция которая скрывает данные фильтра
Espada Дата: Четверг, 12.09.2013, 11:43 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

Появился ещё вопрос, есть какая-нить функция или переменная, которая скрывает все данные фильтра.На пример:
У меня есть фильтр "Группа МЦ", в нём поля 0401,0402,0403,0404,0407,0409. когда пробую скрыть их с помощью записи макроса получается такое:
[vba]
Код

           .PivotItems("0401").Visible = False
           .PivotItems("0402").Visible = False
           .PivotItems("0403").Visible = False
           .PivotItems("0404").Visible = False
           .PivotItems("0407").Visible = False
           .PivotItems("0409").Visible = False
[/vba]
Такая запись не подходит,т.к. если появится ещё одно поле или наоборот одного из этих не будет, макрос не работает. можно-ли скрыть все и оставить 1 например 0407???
 
Ответить
СообщениеПоявился ещё вопрос, есть какая-нить функция или переменная, которая скрывает все данные фильтра.На пример:
У меня есть фильтр "Группа МЦ", в нём поля 0401,0402,0403,0404,0407,0409. когда пробую скрыть их с помощью записи макроса получается такое:
[vba]
Код

           .PivotItems("0401").Visible = False
           .PivotItems("0402").Visible = False
           .PivotItems("0403").Visible = False
           .PivotItems("0404").Visible = False
           .PivotItems("0407").Visible = False
           .PivotItems("0409").Visible = False
[/vba]
Такая запись не подходит,т.к. если появится ещё одно поле или наоборот одного из этих не будет, макрос не работает. можно-ли скрыть все и оставить 1 например 0407???

Автор - Espada
Дата добавления - 12.09.2013 в 11:43
Espada Дата: Четверг, 12.09.2013, 12:10 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

Сделал сам, может кому поможет
[vba]
Код

     With ActiveSheet.PivotTables("СводнаяТаблица2").PivotFields("Группа МЦ")
        For j = 1 To .PivotItems.Count
       If .PivotItems(j).Value <> "0410" Then
          .PivotItems(j).Visible = False
       Else
          .PivotItems(j).Visible = True
       End If
      Next j
     End With
[/vba]
 
Ответить
СообщениеСделал сам, может кому поможет
[vba]
Код

     With ActiveSheet.PivotTables("СводнаяТаблица2").PivotFields("Группа МЦ")
        For j = 1 To .PivotItems.Count
       If .PivotItems(j).Value <> "0410" Then
          .PivotItems(j).Visible = False
       Else
          .PivotItems(j).Visible = True
       End If
      Next j
     End With
[/vba]

Автор - Espada
Дата добавления - 12.09.2013 в 12:10
Serge_007 Дата: Четверг, 12.09.2013, 12:14 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
можно-ли скрыть все и оставить 1 например 0407?

[vba]
Код
Sub PivotFilter()
      Dim i As Long
      Application.ScreenUpdating = False
        
          With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Группа МЦ")
              For i = 1 To .PivotItems.Count
                  If .PivotItems(i).Value = "0407" Then
                  .PivotItems(i).Visible = True
                  Else:
                  .PivotItems(i).Visible = False
                  End If
              Next
          End With
        
      Application.ScreenUpdating = True
End Sub
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
можно-ли скрыть все и оставить 1 например 0407?

[vba]
Код
Sub PivotFilter()
      Dim i As Long
      Application.ScreenUpdating = False
        
          With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Группа МЦ")
              For i = 1 To .PivotItems.Count
                  If .PivotItems(i).Value = "0407" Then
                  .PivotItems(i).Visible = True
                  Else:
                  .PivotItems(i).Visible = False
                  End If
              Next
          End With
        
      Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 12.09.2013 в 12:14
_Boroda_ Дата: Четверг, 12.09.2013, 12:44 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если сначала выбрать фильтром 0407, а потом тем же самым макросом выбрать 0408? И если, при этом, в таблице 0407 находится выше 0408?
Даст ошибку.
Кстати, даст ошибку и в случае, если 0407 нет в поле "Группа МЦ".
Предлагаю такой вариант:
[vba]
Код
    Application.ScreenUpdating = 0
     z_ = "0401"
     On Error Resume Next
     With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Группа МЦ")
         .ClearAllFilters
         For i = 1 To .PivotItems.Count
             If .PivotItems(i).Value <> z_ Then .PivotItems(i).Visible = False
         Next i
         If Err.Number <> 0 Then .ClearAllFilters
     End With
     On Error GoTo 0
     Application.ScreenUpdating = 1
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если сначала выбрать фильтром 0407, а потом тем же самым макросом выбрать 0408? И если, при этом, в таблице 0407 находится выше 0408?
Даст ошибку.
Кстати, даст ошибку и в случае, если 0407 нет в поле "Группа МЦ".
Предлагаю такой вариант:
[vba]
Код
    Application.ScreenUpdating = 0
     z_ = "0401"
     On Error Resume Next
     With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Группа МЦ")
         .ClearAllFilters
         For i = 1 To .PivotItems.Count
             If .PivotItems(i).Value <> z_ Then .PivotItems(i).Visible = False
         Next i
         If Err.Number <> 0 Then .ClearAllFilters
     End With
     On Error GoTo 0
     Application.ScreenUpdating = 1
[/vba]

Автор - _Boroda_
Дата добавления - 12.09.2013 в 12:44
Espada Дата: Четверг, 12.09.2013, 14:00 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 0 ±
Замечаний: 40% ±

Цитата (_Boroda_, Четверг, 12.09.2013, 12:44 # 4)
Кстати, даст ошибку и в случае, если 0407 нет в поле "Группа МЦ".

Спасибо. этот случай я не учёл.
 
Ответить
Сообщение
Цитата (_Boroda_, Четверг, 12.09.2013, 12:44 # 4)
Кстати, даст ошибку и в случае, если 0407 нет в поле "Группа МЦ".

Спасибо. этот случай я не учёл.

Автор - Espada
Дата добавления - 12.09.2013 в 14:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » функция которая скрывает данные фильтра (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!