Разработка с использованием Excel 2007, но должна быть совместима с 2003.
Проблема:
Книга содержит два листа.Второй лист содержит данные, столбцы от A до M. Столбец C отформатирован для значений даты.Не все строки содержат значение в столбце C.
В Sheet One имеются 3 'кнопки выбора (элемент управления формы), помеченные как Дата контракта, Дата вступления в силу и Дата окончания.Когда выбрана дата контракта, необходимо запросить данные на листе два, столбец C (здесь указана дата) с помощью условного фильтра ... Если дата <сегодняшняя дата + 14 дней ... Если true, скопируйте столбец с C по M изэтот ряд к Листу Один начинается в ячейке C13.Продолжайте до тех пор, пока не будут проверены все строки данных. </p>
Если выбрана другая «Кнопка выбора», результаты первого запроса заменяются результатами второго запроса.
Вот код, над которым я работал, но он не будет работать.
Sub OptionButton1_Click ()
Application.ScreenUpdating = False
TEMPLATE_SHEET = "Data_Input"
Database_sheet = "Carrier"
myzerorange = "C" & ActiveWindow.RangeSelection.Row & ":" & "M" & ActiveWindow.RangeSelection.Row
mycompany = "C" & ActiveWindow.RangeSelection.Row
mydate = "D" & ActiveWindow.RangeSelection.Row
Database_sheet = ActiveSheet.Name
DATABASE_RECORDS = Sheets (Database_sheet) .Range ("C2: C1000") Count_Row = 13
If Range (mycompany) <> "" Then
If Range (mydate) <> ""Тогда
'Range(mydate) = contractdate
If mydate < DateAdd("d", 14, "Today()") Then
Range(myzerorange).Copy
Sheets(TEMPLATE_SHEET).Select
'To identify the next blank row in the database sheet
DATABASE_RECORDS = Sheets(TEMPLATE_SHEET).Range("C13:C1000")
'To identify the next blank row in the data_Input sheet
For Each DBRECORD In DATABASE_RECORDS
If DBRECORD <> "" Then
Count_Row = Count_Row + 1
Next DBRECORD
Sheets(TEMPLATE_SHEET).Range("C" & Count_Row).Select
ActiveSheet.Paste
'Return to origin and check for another contract date
Sheets(Database_sheet).Select
Else
End If
Остальное
Конец, если
Конец, если
Application.ScreenUpdating = True
Конец Sub
Этот пересмотренный код все еще не работает ... не уверен, что это зависает ...
`Sub CopyRowConditional ()
Приложение.ScreenUpDating = False
Srownumber = 2 'номер строки исходного листа "Data_Input"
Trownumber = 13' номер строки целевого листа "Carrier"
Do
Srownumber = Srownumber + 1
Trownumber = Trownumber + 1
If Cells (Srownumber, 3) .Value = "" Тогда выход из Do
If Cells (Srownumber, 4).Value
For Column = 3 To 13
Sheets(template_sheet).Cells(Trownumber, Column).Value = >Sheets(Database_sheet).Cells(Srownumber, Column).Value
Next Column
'End If
End If
Loop
Application.ScreenUpdating = True
End Sub`