Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Макрос на вызов автофильтра


Автор: Dmitriy_Donetsk 9.1.2008, 23:20
Переношу данные из одной (Наличие товара) таблицы в другую (Продажа товара).

Помогите реализовать следующую задачу:

при удалении строки (правая кнопка-- Удалить), я хочу, что бы автоматически выполнялось:

Данные--Фильтр--Отобразить все.

Возможно такое сделать? нужно использовать макрос или создавать кнопку? Спасибо за помощь.

Автор: Akina 9.1.2008, 23:40
Программно Данные--Фильтр--Отобразить все - это ActiveWorksheet.ShowAllData.
А вот поймать именно удаление, т.е. определить, что WorkSheet_Change - это именно удаление строки...

Автор: Dmitriy_Donetsk 10.1.2008, 16:14
Т.е. поймать именно удаление невозможно? smile 

Автор: Akina 10.1.2008, 16:39
Этого я не утверждаю. Но полагаю, что задача непростая... фактически тебе потребуется override штатного метода аппликации.

Но больше всего мне непонятен смысл этого действа - удаления номенклатуры.

Автор: Dmitriy_Donetsk 11.1.2008, 01:01
Хорошо, можно тогда как-то отловить и скопировать единственную строку, которая появляется после применения фильтра.
Т.е. я хочу создать кнопку, прикрепить к ней макрос, который будет копировать значения Единственной строки. Естественно ее номер может быть любым: 33, 65, 100 и т.д... Но в таблицы после фильтра она будет отображена одна. Значения этой строки мне нужно будет после перекинуть в таблицу Продажи.

Спасибо за помощь.

Автор: bilya 11.1.2008, 04:35
Удаление строк: http://forum.developing.ru/showthread.php?t=12008
Событие кнопок (в том числе контекстного меню): http://forum.sources.ru/index.php?showtopic=212650&hl=
Копирование строки автофильтра (для расширенного примерно тоже самое):
Код
  i = "bla-bla" ' ваше значение
  
  Set tabl = ActiveWorkbook.Sheets(1).Range(Cells(1, 1), Range("A1").SpecialCells(xlLastCell).Address)

  tabl.AutoFilter Field:=1, Criteria1:="=" & i, Operator:=xlAnd
  Set kopir = ActiveWorkbook.Sheets(1).Range(Cells(1, 1), Range("A1").SpecialCells(xlLastCell).Address)
  Application.CutCopyMode = False
  kopir.Offset(1).Resize(kopir.Rows.Count - 1).Copy Destination:=Sheets(2).Range("a1")
  tabl.AutoFilter
Вытащил из бААлшого кода - но, как-будто, работает  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)