#excel #vba #filter #copy
Вопрос:
Я пытаюсь создать кнопку, которая будет фильтровать таблицу, выбирать и копировать данные из ячейки D6 и только видимые данные из отфильтрованной таблицы с диапазоном от D13 до D9999 в буфер обмена, чтобы я мог использовать информацию для вставки ее в другое место, например, в Word, блокнот, одну заметку и т. Д., Используя CTRL V. Я написал этот код, но ничего не вставляется, когда я нажимаю CTRL V. Я думаю, что это связано с тем, что я не фильтрую, что я делаю в конце концов. Но это важно. Как мне заставить это работать?
Dim ws As Worksheet Set ws = Worksheets("Cost") ws.Range("D13:D9999").AutoFilter field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor Range("D6","D13:D9999").Select Selection.COPY ws.Range("D13:D9999").AutoFilter End Sub
Некоторое время я изучал это, но, похоже, не могу найти ничего, что могло бы сработать. Спасибо.
Комментарии:
1. Я боюсь, что вставить диапазон в блокнот невозможно. Даже в Слове, если оно прерывистое, не все так просто…
Ответ №1:
Qucik и грязное решение состоит в том, чтобы
- снимите
AutoFilter
в конце. Фактически, убедитесь, что.Copy
это последняя команда в коде — это действие сохранитApplication.CutCopyMode
скопированный текст в буфере обмена до дальнейших действий. - И копируйте только один диапазон, т. Е. удаляйте
D6
из копии.
Dim ws As Worksheet Set ws = Worksheets("Cost") ws.Range("D13:D9999").AutoFilter field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor Range("D13:D9999").Select Selection.Copy End Sub
Ответ №2:
Если вы хотите скопировать видимые ячейки только после применения фильтра, сделайте что-нибудь вроде следующего: (обратите внимание, что я избегаю использования Select)
Set r1 = [d6] 'filter the range Set r2 = Range("d10:d20") r2.AutoFilter field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor Range(r1, r2.SpecialCells(xlCellTypeVisible)).Copy
Затем вам нужно будет выполнить вставку, прежде чем отключать автофильтр.
Комментарии:
1. Любые предложения о том, как я могу это сделать с помощью одной кнопки или это должны быть две кнопки. Один для копирования, а другой для снятия фильтрации? Спасибо за вашу помощь.
2. @Отлично Я не знаю никакого способа, чтобы Excel знал, когда вы выполнили свою
control v
операцию. Так что нет, если это то, что ты делал, две кнопки.