![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
![]()
Всем привет!
![]() Подскажите, пожалуйста, как записать макрос: Необходимо найти все ячейки на листе определенного формата, например Application.FindFormat.NumberFormat = "#,##0.00;#,##0.00-" Application.FindFormat.Font.FontSty le = "Полужирный" выделить их, и вставить в определенный диапазон. Пробовала записать макрос проделав вручную операции в книги (excel2010) (разработчик -> записать макрос): - Ctrl+F - Options - Format - задаю необходимый мне формат - Find all - Ctrl + A - активирую лист в котором работаю - Ctrl + C - и вставляю значения куда необходимо Однако, повторить записанный макрос с необходимым результатом Excel не может, копируется только первая ячейка данного формата (а нужны все!). ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 21.10.2012
Сообщений: 208
|
![]()
Может цикл какой прикрутить?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
![]()
думала об этом,
но там сложность в том, что ячейки находятся поочередно, и каждый раз становится активной новая ячейка, а нужно все сразу. что-то ничего в голову не приходит... |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 21.10.2012
Сообщений: 208
|
![]()
Может от Вас пример "поочерёдности" увидим в .xls например?
|
![]() |
![]() |
![]() |
#5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
отметьте одну ячейку, нажмите Ctrl отметьте другую несмежную ячейку (не имеющую общей границы с первой), а теперь нажмите Ctrl+C, читайте надпись.
найти все нужные ячейки и обединить их в диапазон не проблема (это диапазон составленый из множества областей), а вот потом скопировать...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 30.07.2013 в 17:16. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
![]()
Kalbasiatka,
была идея написать: Sub vv() Dim x As Integer For x = 1 To 1000 If Cells(x, "B").NumberFormat = "#,##0.00;#,##0.00-" Then Cells(x, "B").Copy Range("H1").End(xlDown).Offset(1, 0).Activate ActiveSheet.Paste End If Next x End Sub однако объемы большие и такой код занимает очень много времени (особенно если нужно переносить на другой лист), Классно было бы если в нижеследующем коде каждый раз прибавлялся бы к выбранному диапазону новый, а не скидывался старый и выбирался новый: Sub vv() Dim x As Integer For x = 1 To 1000 If Cells(x, "B").NumberFormat = "#,##0.00;#,##0.00-" Then Cells(x, "B").Select End If Next x End Sub |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
![]()
IgorGO,
а как такое сделать, ссылаясь не на конкретные ячейки, а именно на те, которые подходят под определенный формат? |
![]() |
![]() |
![]() |
#8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]() Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 21.10.2012
Сообщений: 208
|
![]()
Взял 10 000 ячеек, из них 9000 подходящих под условие, заняло 5 секунд:
Код:
Последний раз редактировалось kalbasiatka; 31.07.2013 в 08:33. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
![]()
IgorGO,
идея интересная, ее мне нужно додумать: может очень подойти для другого проекта. ![]() Единственное что, я боюсь писать коды с Do While. Kalbasiatka, в данном случае код вполне подходит. ![]() Спасибо Вам Большое за уделенное время! |
![]() |
![]() |