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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 16:27   #1
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию Удаление с другого листа выбранных ячеек (VBA)

Здравствуйте. Нужна помощь в написании макроса. Суть заключается в том, что есть лист "holidays", там пользователь выбирает 2 даты (начальную и конечную).если в первом и втором столбце значения разные, то с других листов "Ноябрь" и "Декабрь" должен удаляться диапазон дат, если же в первом и втором столбце выбраны одинаковые дату, то удалятся должна 1 дата с тех же листов (Ноябрь и декабрь), если они там имеются. и удаляться должна вся строка. Очень прошу помочь.
P.S. пример данных и того как все это будет выглядеть в документе "пример.xlsm"
Вложения
Тип файла: rar Пример.rar (48.5 Кб, 8 просмотров)

Последний раз редактировалось terredis; 23.03.2013 в 16:30.
terredis вне форума Ответить с цитированием
Старый 24.03.2013, 00:58   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

В результате тестирования сильно поредели строки с данными.
Вложения
Тип файла: rar Пример.rar (52.0 Кб, 7 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.03.2013, 02:02   #3
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

Цитата:
В результате тестирования сильно поредели строки с данными.
Спасибо. единственное, когда выбирается интервал дат, то он удаляет начальную и конечную, а даты, находящиеся в выбранном промежутке, он окрашивает в красный цвет, как это можно исправить?(что бы удалялся весь интервал)
terredis вне форума Ответить с цитированием
Старый 24.03.2013, 04:54   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Изменил процедуру удаления строк
Код:
Sub Killer_Date()
    Dim Sh As Worksheet, X, lLastRowMY As Long, Sh2 As Worksheet
    Dim X1, X2, Cel As Range
    Dim StartDate As Date, EndDate As Date, DateTobeChecked As Date
    Set Sh = ThisWorkbook.Worksheets("Holidays")
    lLastRowMY = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row
    X = Sh.Range("A2:B" & lLastRowMY)
    Set Sh = ThisWorkbook.Worksheets("Ноябрь")
    lLastRowMY = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row
    X1 = Sh.Range("A1:A" & lLastRowMY)
    Set Sh2 = ThisWorkbook.Worksheets("Декабрь")
    lLastRowMY = Sh2.Cells(Sh2.Rows.Count, 1).End(xlUp).Row
    X2 = Sh2.Range("A1:A" & lLastRowMY)
    Application.ScreenUpdating = False

   On Error Resume Next

    For n = 1 To UBound(X1)
        If IsDate(X1(n, 1)) Then
            DateTobeChecked = CDate(X1(n, 1))
            For m = 1 To UBound(X)
                StartDate = CDate(X(m, 1))
                EndDate = CDate(X(m, 2))
                If Between(StartDate, EndDate, DateTobeChecked) Then
                    Sh.Range("A" & n).Interior.ColorIndex = 3
                End If
            Next
        End If
    Next
    For n = 1 To UBound(X2)
        If IsDate(X2(n, 1)) Then
            DateTobeChecked = CDate(X2(n, 1))
            For m = 1 To UBound(X)
                StartDate = CDate(X(m, 1))
                EndDate = CDate(X(m, 2))
                If Between(StartDate, EndDate, DateTobeChecked) Then
                    Sh2.Range("A" & n).Interior.ColorIndex = 3
                End If
            Next
        End If
    Next
       lLastRowMY = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row
    For n = lLastRowMY To 1 Step -1
        If Sh.Cells(n, 1).Interior.ColorIndex = 3 Then
            Sh.Rows(n).Delete
        End If
    Next
       lLastRowMY = Sh2.Cells(Sh2.Rows.Count, 1).End(xlUp).Row
    For n = lLastRowMY To 1 Step -1
         If Sh2.Cells(n, 1).Interior.ColorIndex = 3 Then
            Sh2.Rows(n).Delete
        End If
    Next
    Application.ScreenUpdating = True

End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 24.03.2013 в 05:02.
doober вне форума Ответить с цитированием
Старый 25.03.2013, 01:22   #5
terredis
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 32
По умолчанию

Действительно все заработало, спасибо)
terredis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплывающее окно, показывающее списком содержание ячеек другого листа Spring_me Microsoft Office Excel 14 13.11.2013 12:16
Ссылка ячеек одного листа на ячейки другого листа n0str0m0 Microsoft Office Excel 10 31.12.2011 12:11
Перенос выбранных ячеек W3r3Wolf Microsoft Office Excel 5 26.10.2011 13:44
Дублирование выбранных ячеек. GrayBy Microsoft Office Excel 12 05.03.2011 13:07
Заполнение имени, при сохранении. Автозаполнение выбранных ячеек GrayBy Microsoft Office Excel 41 01.07.2010 18:14