Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Отмена действия макроса при удалении значения - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отмена действия макроса при удалении значения (Макросы/Sub)
Отмена действия макроса при удалении значения
китин Дата: Четверг, 20.07.2017, 08:20 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4352
Репутация: 689 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
Доброго всем времени, уважаемые!!!! Накропал тут небольшой макрос для окрашивания определенного количества ячеек в строке при внесении в ячейку любого значения.

а вот как сделать, что бы при удалении этого значения из ячейки окрашивание удалялось что то никак не получается. %) :'( :(

[p.s.]как всегда критика приветствуется и , при наличии времени, комментарии желательны :D
К сообщению приложен файл: Gant.xlsm(21Kb)


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538


Сообщение отредактировал китин - Четверг, 20.07.2017, 08:21
 
Ответить
СообщениеДоброго всем времени, уважаемые!!!! Накропал тут небольшой макрос для окрашивания определенного количества ячеек в строке при внесении в ячейку любого значения.

а вот как сделать, что бы при удалении этого значения из ячейки окрашивание удалялось что то никак не получается. %) :'( :(

[p.s.]как всегда критика приветствуется и , при наличии времени, комментарии желательны :D

Автор - китин
Дата добавления - 20.07.2017 в 08:20
AndreTM Дата: Четверг, 20.07.2017, 08:43 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
[vba]
Код
        ' ...
        .Color = Iif(Target <> "", 65535, xlNone)
        ' ...
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение[vba]
Код
        ' ...
        .Color = Iif(Target <> "", 65535, xlNone)
        ' ...
[/vba]

Автор - AndreTM
Дата добавления - 20.07.2017 в 08:43
китин Дата: Четверг, 20.07.2017, 08:53 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4352
Репутация: 689 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
Спасибо Андрей, но немного не то. Удаляется окрашивание только в изменяемой ячейке, а у меня там диапазон окрашивается
[vba]
Код
Target.Offset(0, -dr + 1).Resize(1, dr)
[/vba]
вот надо из всего диапазона цвет убрать


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеСпасибо Андрей, но немного не то. Удаляется окрашивание только в изменяемой ячейке, а у меня там диапазон окрашивается
[vba]
Код
Target.Offset(0, -dr + 1).Resize(1, dr)
[/vba]
вот надо из всего диапазона цвет убрать

Автор - китин
Дата добавления - 20.07.2017 в 08:53
RAN Дата: Четверг, 20.07.2017, 09:03 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4552
Репутация: 920 ±
Замечаний: 0% ±

2010
[vba]
Код
'        If Target <> "" Then Target.Offset(0, -dr + 1).Resize(1, dr).Select
        With Target.Offset(0, -dr + 1).Resize(1, dr).Interior
            .Color = IIf(Target <> "", 65535, xlNone)
        End With
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
'        If Target <> "" Then Target.Offset(0, -dr + 1).Resize(1, dr).Select
        With Target.Offset(0, -dr + 1).Resize(1, dr).Interior
            .Color = IIf(Target <> "", 65535, xlNone)
        End With
[/vba]

Автор - RAN
Дата добавления - 20.07.2017 в 09:03
AndreTM Дата: Четверг, 20.07.2017, 09:08 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
Я когда сам файл посмотрел - понял, что диапазон...
Так тогда возникает вопрос - а у какой именно части этого диапазона надо убрать раскрашивание?
Ну или если надо убрать "всё влево пока раскрашенное" - так цикл с убиранием, что-то по типу такого:


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеЯ когда сам файл посмотрел - понял, что диапазон...
Так тогда возникает вопрос - а у какой именно части этого диапазона надо убрать раскрашивание?
Ну или если надо убрать "всё влево пока раскрашенное" - так цикл с убиранием, что-то по типу такого:

Автор - AndreTM
Дата добавления - 20.07.2017 в 09:08
_Boroda_ Дата: Четверг, 20.07.2017, 09:15 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11547
Репутация: 4754 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Такой вариант
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    PR = Cells(Rows.Count, 2).End(xlUp).Row
    PC = Cells.SpecialCells(xlLastCell).Column
    If Not Intersect(Target, Range(Cells(1, 3), Cells(PR, PC))) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        dl = Target.Row
        ds = Target.Column
        dr = Range("B" & dl).Value
        If ds - 2 < dr Then
            dr = ds - 2
        End If
        If Target <> "" Then
            Target.Offset(0, -dr + 1).Resize(1, dr).Interior.Color = 65535
        Else
            For i = 0 To dr - 1
                If Target.Offset(0, -i) <> "" Then Exit Sub
                Target.Offset(0, -i).Interior.Pattern = xlNone
            Next i
        End If
    End If
End Sub
[/vba]

Игорь, а зачем ты Димонов наверх, до Саба, вынес? Ты их потом еще где-то использовать собираешься?
А отступы очень удобно делать Тав-ом. И еще кнопочка специальная есть (ПКМ на панель в VBA, вылезает менюшка, выбираешь "Ити ты", появляется панель (примерно как в 2003 было)
А то очень неудобно с таким кодом работать
К сообщению приложен файл: Gant_1.xlsm(20Kb) · 0260257.png(10Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТакой вариант
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    PR = Cells(Rows.Count, 2).End(xlUp).Row
    PC = Cells.SpecialCells(xlLastCell).Column
    If Not Intersect(Target, Range(Cells(1, 3), Cells(PR, PC))) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        dl = Target.Row
        ds = Target.Column
        dr = Range("B" & dl).Value
        If ds - 2 < dr Then
            dr = ds - 2
        End If
        If Target <> "" Then
            Target.Offset(0, -dr + 1).Resize(1, dr).Interior.Color = 65535
        Else
            For i = 0 To dr - 1
                If Target.Offset(0, -i) <> "" Then Exit Sub
                Target.Offset(0, -i).Interior.Pattern = xlNone
            Next i
        End If
    End If
End Sub
[/vba]

Игорь, а зачем ты Димонов наверх, до Саба, вынес? Ты их потом еще где-то использовать собираешься?
А отступы очень удобно делать Тав-ом. И еще кнопочка специальная есть (ПКМ на панель в VBA, вылезает менюшка, выбираешь "Ити ты", появляется панель (примерно как в 2003 было)
А то очень неудобно с таким кодом работать

Автор - _Boroda_
Дата добавления - 20.07.2017 в 09:15
китин Дата: Четверг, 20.07.2017, 09:26 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4352
Репутация: 689 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
зачем ты Димонов наверх, до Саба, вынес? Ты их потом еще где-то использовать собираешься?

Не знаю. Я пробовал отдельный макрос для удаления цвета написать с теми же переменными, но не получилось совместить.
Всем спасибо, все отлично работает!!!!


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
Сообщение
зачем ты Димонов наверх, до Саба, вынес? Ты их потом еще где-то использовать собираешься?

Не знаю. Я пробовал отдельный макрос для удаления цвета написать с теми же переменными, но не получилось совместить.
Всем спасибо, все отлично работает!!!!

Автор - китин
Дата добавления - 20.07.2017 в 09:26
AndreTM Дата: Четверг, 20.07.2017, 09:37 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
Вообще, если уж строго подходить, то надо использовать код примерно так:


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеВообще, если уж строго подходить, то надо использовать код примерно так:

Автор - AndreTM
Дата добавления - 20.07.2017 в 09:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отмена действия макроса при удалении значения (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!