Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 11:49   #21
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Если будут не смежные, тогда примерно так будет выглядеть код (немного переделан):

Код:
Sub КопированиеЕслиБольшеИлиРавно()
'Объявляем переменные
Dim Wb As Workbook, r As Long, r2 As Long, lt As String, lt2 As String
'Сообщение о предложении делать копирование или нет
If MsgBox("Скопировать строки, которые меньше/или равны [критическому значению]?", vbYesNo, "Подтверждение") <> vbYes Then Exit Sub
'Отключение обновления экрана
Application.ScreenUpdating = False
'Отключение обработки событий
Application.EnableEvents = False
'Объявляем переменной Wb имя текущей книги
Set Wb = ActiveWorkbook
'Объявляем переменной lt2 имя текущего листа
lt2 = ActiveSheet.Name
'Объявляем переменной lt имя листа "Лист2"
lt = "Лист2"
'В текущей книги, на текущем листе автофильтром выбираем значения по выделеные красным цветом по столбцу F
Wb.Sheets(lt2).Range("$F$1:$F$10000").AutoFilter Field:=1, Criteria1:=RGB(255, 199, 206), Operator:=xlFilterCellColor
'Ищим последнию заполненную ячейку по столбцу С, и присваем переменной r номер строки, найденного последнего значения
r = Cells(Rows.Count, "C").End(xlUp).Offset(, 0).Row
'Ищим последнию заполненную ячейку по столбцу С на листе "Лист2", и присваем переменной r2 номер строки, найденного последнего значения, и добавляем еще одну строку
r2 = Wb.Sheets(lt).Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Row
'В текущей книги, на текущем листе копируем значения начиная с А3 и заканчивая Е(будет стоять число полученое переменной r)
Wb.Sheets(lt2).Range("A3:B" & r).Copy
Wb.Sheets(lt).Range("A" & r2).PasteSpecial Paste:=xlPasteValues
Wb.Sheets(lt2).Range("D3:E" & r).Copy
Wb.Sheets(lt).Range("D" & r2).PasteSpecial Paste:=xlPasteValues
'Сбрасываем выделения, после копирования [этой строки раньше небыло, добавьте]
Application.CutCopyMode = False
'Включаем обработку событий
Application.EnableEvents = True
'Включаем обновление экрана
Application.ScreenUpdating = True
End Sub
красным выделено, что переделано
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 14.06.2012, 11:54   #22
Mr.Vahe
Пользователь
 
Аватар для Mr.Vahe
 
Регистрация: 09.06.2012
Сообщений: 15
По умолчанию

Спасибо!!! Пока все предельно ясно))
Mr.Vahe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое копирование строки vaselevskii Microsoft Office Access 2 15.12.2011 01:28
Автоматическое копирование DenProx Microsoft Office Excel 12 14.08.2010 20:25
Автоматическое копирование Clif Помощь студентам 0 10.08.2010 15:12
Автоматическое добавление строки или условное копирование формул. Возможно ли? PhilAT Microsoft Office Excel 8 24.04.2010 23:15
Автоматическое копирование выделенной строки Enigmatic Microsoft Office Excel 2 25.12.2009 13:08