Добрый день, знатоки VBA! Скачал на просторах макрос подсветки активной строки и ячейки цветом. Вставил с помощью макрорекордера изменение цвета шрифта активной ячейки на белый цвет, а как сделать, чтобы шрифт возвращался в изначальное состояние (после того, как ячейка становится опять не активной) не знаю. Подскажите пожалуйста, какую строчку прописать в блоке "цвет шрифта в активной ячейке"? Весь код макроса: [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count <= 2500 Then ActiveSheet.Cells.FormatConditions.Delete Dim RSMin As Integer Dim CSMin As Integer Dim RSMax As Integer Dim CSMax As Integer ' ----------------------------------------- For Each Target In Selection.Cells If RSMin = 0 Then RSMin = Target.Row If CSMin = 0 Then CSMin = Target.Column If Target.Row < RSMin Then RSMin = Target.Row ElseIf Target.Row > RSMax Then RSMax = Target.Row End If If Target.Column < CSMin Then CSMin = Target.Column ElseIf Target.Column > CSMax Then CSMax = Target.Column End If Next '--------цвет активной строки--------------- With Range(Cells(RSMin, 1), Cells(RSMax, 256)) .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 10079487 'Index = 40 End With '--------цвет активной ячейки--------------- With Range(Cells(RSMin, CSMin), Cells(RSMax, CSMax)) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 14942123 'Index=34 (14936512) End With '--------цвет шрифта активной ячейки-------- With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With
Else End If End Sub
[/vba]
Спасибо.
Добрый день, знатоки VBA! Скачал на просторах макрос подсветки активной строки и ячейки цветом. Вставил с помощью макрорекордера изменение цвета шрифта активной ячейки на белый цвет, а как сделать, чтобы шрифт возвращался в изначальное состояние (после того, как ячейка становится опять не активной) не знаю. Подскажите пожалуйста, какую строчку прописать в блоке "цвет шрифта в активной ячейке"? Весь код макроса: [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count <= 2500 Then ActiveSheet.Cells.FormatConditions.Delete Dim RSMin As Integer Dim CSMin As Integer Dim RSMax As Integer Dim CSMax As Integer ' ----------------------------------------- For Each Target In Selection.Cells If RSMin = 0 Then RSMin = Target.Row If CSMin = 0 Then CSMin = Target.Column If Target.Row < RSMin Then RSMin = Target.Row ElseIf Target.Row > RSMax Then RSMax = Target.Row End If If Target.Column < CSMin Then CSMin = Target.Column ElseIf Target.Column > CSMax Then CSMax = Target.Column End If Next '--------цвет активной строки--------------- With Range(Cells(RSMin, 1), Cells(RSMax, 256)) .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 10079487 'Index = 40 End With '--------цвет активной ячейки--------------- With Range(Cells(RSMin, CSMin), Cells(RSMax, CSMax)) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 14942123 'Index=34 (14936512) End With '--------цвет шрифта активной ячейки-------- With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With
согласен с Вами, но в моем случае необходимо, т.к. человек с неправильным цветоощущением или как там это называется, не совсем дальтоник, но все цвета приглушены.
согласен с Вами, но в моем случае необходимо, т.к. человек с неправильным цветоощущением или как там это называется, не совсем дальтоник, но все цвета приглушены.
вот накидал на быструю руку. Добавьте новый листик(можно его даже скрытым сделать) и сохраняйте на него изменяемые заливки, а потом возвращайте их на место. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static OLdTarget As Range Dim oRng As Range Const MyColor = vbYellow 'цвет выделенного диапазона, _ можете добавить переменные для шрифта или еще что-то и соответственно их разместить в процедуре
If OLdTarget Is Nothing Then Set OLdTarget = Target If Target.Address <> OLdTarget.Address Then For Each oRng In Worksheets("Sheet1").Range(OLdTarget.Address) If Me.Range(oRng.Address).Interior.Color = MyColor Then _ Me.Range(oRng.Address).Interior.Color = oRng.Interior.Color oRng.Interior.Color = xlNone Next End If For Each oRng In Target Worksheets("Sheet1").Range(oRng.Address).Interior.Color = oRng.Interior.Color oRng.Interior.Color = MyColor Next Set OLdTarget = Target End Sub
вот накидал на быструю руку. Добавьте новый листик(можно его даже скрытым сделать) и сохраняйте на него изменяемые заливки, а потом возвращайте их на место. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static OLdTarget As Range Dim oRng As Range Const MyColor = vbYellow 'цвет выделенного диапазона, _ можете добавить переменные для шрифта или еще что-то и соответственно их разместить в процедуре
If OLdTarget Is Nothing Then Set OLdTarget = Target If Target.Address <> OLdTarget.Address Then For Each oRng In Worksheets("Sheet1").Range(OLdTarget.Address) If Me.Range(oRng.Address).Interior.Color = MyColor Then _ Me.Range(oRng.Address).Interior.Color = oRng.Interior.Color oRng.Interior.Color = xlNone Next End If For Each oRng In Target Worksheets("Sheet1").Range(oRng.Address).Interior.Color = oRng.Interior.Color oRng.Interior.Color = MyColor Next Set OLdTarget = Target End Sub
и сохраняйте на него изменяемые заливки, а потом возвращайте их на место.
это я не понял - какие заливки и куда сохранять. У бухгалтера большущая таблица, вправо растянулась на хрен знает сколько и ему нужно просто выделить активную строку, чтобы она подсветилась ярким цветом и еще ярче должна быть активная ячейка. Яркая ячейка получается только темного цвета (для него, он дальтоник), поэтому шрифт этой активной ячейки меняем на белый. А когда бухгалтер уйдет на другую ячейку, то эта ячейка (которая была секунду назад активной), должна возвратить цвет исходника. Бухгалтер никуда ничего не будет добавлять, ему нужна просто яркая подсветка. С подсветкой цветом активной строки и подсветкой активной ячейки вопрос решен кодом в моем первом посту, а вот как вернуть изначальный шрифт - вопрос. Может я что не допонял - извините.
и сохраняйте на него изменяемые заливки, а потом возвращайте их на место.
это я не понял - какие заливки и куда сохранять. У бухгалтера большущая таблица, вправо растянулась на хрен знает сколько и ему нужно просто выделить активную строку, чтобы она подсветилась ярким цветом и еще ярче должна быть активная ячейка. Яркая ячейка получается только темного цвета (для него, он дальтоник), поэтому шрифт этой активной ячейки меняем на белый. А когда бухгалтер уйдет на другую ячейку, то эта ячейка (которая была секунду назад активной), должна возвратить цвет исходника. Бухгалтер никуда ничего не будет добавлять, ему нужна просто яркая подсветка. С подсветкой цветом активной строки и подсветкой активной ячейки вопрос решен кодом в моем первом посту, а вот как вернуть изначальный шрифт - вопрос. Может я что не допонял - извините.grh1
grh1, Приложите образец файла, что бы понимать, что в нем есть и что можно использовать. а в вашем случае - одно УФ создаете, другое удаляете вот и все.
grh1, Приложите образец файла, что бы понимать, что в нем есть и что можно использовать. а в вашем случае - одно УФ создаете, другое удаляете вот и все.boa
Выкладываю файл с координатным выделением… Считаю это лучший вариант во всем интернете. Парень видать талант – min строк кода и координатное выделение готово, причем не убивает имеющееся на листе сделанное ранее форматирование. Все просмотренные и опробованные мной аналоги – код в разы больше, который порой прописывается и в модуле листа и в модуле книги и просто в module, а у моего бухгалтера и так файл забит макросами по самые яйца. Написал этот код, к сожалению, ГОСТЬ планеты (ник dl), поэтому написать ему нет возможности. Хотя… скорее всего основной код взят с надстройки RowLiner, но как талантливо причёсан!! Из кодовой портянки, сделана конфетка. Ещё бы одну строчечку кода к моему безграмотному блоку добавить и было бы счастье.
Выкладываю файл с координатным выделением… Считаю это лучший вариант во всем интернете. Парень видать талант – min строк кода и координатное выделение готово, причем не убивает имеющееся на листе сделанное ранее форматирование. Все просмотренные и опробованные мной аналоги – код в разы больше, который порой прописывается и в модуле листа и в модуле книги и просто в module, а у моего бухгалтера и так файл забит макросами по самые яйца. Написал этот код, к сожалению, ГОСТЬ планеты (ник dl), поэтому написать ему нет возможности. Хотя… скорее всего основной код взят с надстройки RowLiner, но как талантливо причёсан!! Из кодовой портянки, сделана конфетка. Ещё бы одну строчечку кода к моему безграмотному блоку добавить и было бы счастье.grh1
как сделать, чтобы шрифт возвращался в изначальное состояние
Ваш "самый лучший код" практически один в один с кодом, предложенным boa в #6, в котором есть и строка, отвечающая за цвет шрифта. Эти коды используют УФ, и совершенно не затрагивают формат ячеек, поэтому возвращать в изначальное состояние, собственно, нечего. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Cells.FormatConditions.Delete If Target.Cells.Count <= 2500 Then If Target.Rows.Count < 11 Then With Target.EntireRow .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 10079487 'цвет мой - персик, у него индекс=40 тот же персик End With End If With Target .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 11352099 'Interior.Color - цвет заливки .FormatConditions(1).Font.Color = 255 'Font.Color - цвет шрифта End With Else End If End Sub
как сделать, чтобы шрифт возвращался в изначальное состояние
Ваш "самый лучший код" практически один в один с кодом, предложенным boa в #6, в котором есть и строка, отвечающая за цвет шрифта. Эти коды используют УФ, и совершенно не затрагивают формат ячеек, поэтому возвращать в изначальное состояние, собственно, нечего. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Cells.FormatConditions.Delete If Target.Cells.Count <= 2500 Then If Target.Rows.Count < 11 Then With Target.EntireRow .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 10079487 'цвет мой - персик, у него индекс=40 тот же персик End With End If With Target .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color = 11352099 'Interior.Color - цвет заливки .FormatConditions(1).Font.Color = 255 'Font.Color - цвет шрифта End With Else End If End Sub
RAN, спасибо большое. Вы действительно специалист высокого уровня - убеждался не раз, за что Вас и уважают. Но не в обиду никому, не удержался и написал небольшой пересказ этой темы. Подчеркну - написано простым ОБЫВАТЕЛЕМ-ПОЛЬЗОВАТЕЛЕМ, (можно даже сказать блондинкой), который в кодах понимает как баран в математике. ----------------------------------------------------------------------------------------------------------------------------------------------------------------
RAN, спасибо большое. Вы действительно специалист высокого уровня - убеждался не раз, за что Вас и уважают. Но не в обиду никому, не удержался и написал небольшой пересказ этой темы. Подчеркну - написано простым ОБЫВАТЕЛЕМ-ПОЛЬЗОВАТЕЛЕМ, (можно даже сказать блондинкой), который в кодах понимает как баран в математике. ----------------------------------------------------------------------------------------------------------------------------------------------------------------grh1
Прям какой-то СОВЕТСКИЙ триллер получился. В главных ролях: - пассажир - специалист 1 - специалист 2 - главный специалист
пассажир: «…Мне необходимо быстро и комфортно доехать из пункта А в пункт Б расстоянием 1200км и для этого я достал мерседес. Когда я буду ехать, то в больших населенных пунктах меня должны мои люди узнавать по желтому капоту. Проезд одного крупного населенного пункта занимает 25км, таких населенных пунктов всего 3 штуки, остальной путь – по трассе ВНЕ населенных пунктов. И т.к. меня очень сильно раздражает желтый цвет, прошу специалистов помочь быстро перекрашивать желтый капот на оригинал, при этом капот я корявенко, но уже выкрасил в желтый цвет.
специалист 1:а зачем вам мерседес, у нас есть запорожец (ну а чё?) – откапитален, оттюнингован, с новой резиной и что самое главное желтый капот правильно покрашен и перекрашивается в исходный цвет простым нажатием 12-ти кнопок?!
пассажир: (коротко и корректно со словом спасибо) спасибо, но мне нужно без запорожца.
специалист 2:ну не хотите запорожец, могу предложит свою ладу Калина – вот на быструю руку накидал инструкцию – чтобы перекрасить ваш капот, сначала нужно создать 148 разновидностей цветов, потом к моей ладе Калина надо чтобы рядом с вами ехала еще одна какая-нибудь машина (например жигули 1985 года выпуска) и сохраняла все ваши 148 цветов и при вашем запросе возвращала вам нужный цвет. Т.к. эти жигули старенькие и чтобы они не бросались в глаза, то можно сделать их невидимыми для этого нужно покрасить специальной невидимой краской.
пассажир: это я не понял - какие 148 цветов, куда сохранять и какие жигули 1985 года? (пассажир терпеливо еще раз объясняет, что ему все-таки нужно) Давайте еще раз объясню для чего мне нужно перекрашивать желтый капот – дорога длиннющая, растянулась хрен знает на сколько в даль и ехать с раздражающим желтым капотом всю эту дорогу просто пытка и чревата авариями. Мне нужно просто быстрая перекраска желтого капота в основной цвет автомобиля. (пассажир дабы не обидеть человека корректно просит извинения за своё непонимание) Может я что не допонял - извините.
главный специалист и специалист 2:да что вы кочевряжитесь, чем наша лада Калина хуже вашего мерседеса – давайте показывайте свой мерседес, что бы понимать, что в нем есть и что можно использовать.
пассажир: (пассажир подгоняет мерседес, говорит, что это лучший вариант во всем сегменте авторынка, указывает, где его произвели и конкретные плюсы для простого ОБЫВАТЕЛЯ и еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет)
главный специалист: «Всё смешалось в доме Облонских» цитирует пассажира:
Цитата
«это лучший вариант во всем сегменте авторынка»
однако, цитирует пассажира:
Цитата
«спасибо, но мне нужно без запорожца»
и, цитирует пассажира:
Цитата
«нужна всего лишь перекраска капота в исходный цвет»
Ваш "самый лучший вариант на авторынке" практически один в один с нашей ладой Калиной, предложенной специалистом 2 ранее, в котором уже есть возможность перекрасить ваш капот.
Но в принципе в вашем мерседесе действительно надо всего лишь перекрасить капот, то вот вам мой вариант - сделайте глубокий вдох и на выдохе капот будет перекрашен – всё! (занавес)
Прям какой-то СОВЕТСКИЙ триллер получился. В главных ролях: - пассажир - специалист 1 - специалист 2 - главный специалист
пассажир: «…Мне необходимо быстро и комфортно доехать из пункта А в пункт Б расстоянием 1200км и для этого я достал мерседес. Когда я буду ехать, то в больших населенных пунктах меня должны мои люди узнавать по желтому капоту. Проезд одного крупного населенного пункта занимает 25км, таких населенных пунктов всего 3 штуки, остальной путь – по трассе ВНЕ населенных пунктов. И т.к. меня очень сильно раздражает желтый цвет, прошу специалистов помочь быстро перекрашивать желтый капот на оригинал, при этом капот я корявенко, но уже выкрасил в желтый цвет.
специалист 1:а зачем вам мерседес, у нас есть запорожец (ну а чё?) – откапитален, оттюнингован, с новой резиной и что самое главное желтый капот правильно покрашен и перекрашивается в исходный цвет простым нажатием 12-ти кнопок?!
пассажир: (коротко и корректно со словом спасибо) спасибо, но мне нужно без запорожца.
специалист 2:ну не хотите запорожец, могу предложит свою ладу Калина – вот на быструю руку накидал инструкцию – чтобы перекрасить ваш капот, сначала нужно создать 148 разновидностей цветов, потом к моей ладе Калина надо чтобы рядом с вами ехала еще одна какая-нибудь машина (например жигули 1985 года выпуска) и сохраняла все ваши 148 цветов и при вашем запросе возвращала вам нужный цвет. Т.к. эти жигули старенькие и чтобы они не бросались в глаза, то можно сделать их невидимыми для этого нужно покрасить специальной невидимой краской.
пассажир: это я не понял - какие 148 цветов, куда сохранять и какие жигули 1985 года? (пассажир терпеливо еще раз объясняет, что ему все-таки нужно) Давайте еще раз объясню для чего мне нужно перекрашивать желтый капот – дорога длиннющая, растянулась хрен знает на сколько в даль и ехать с раздражающим желтым капотом всю эту дорогу просто пытка и чревата авариями. Мне нужно просто быстрая перекраска желтого капота в основной цвет автомобиля. (пассажир дабы не обидеть человека корректно просит извинения за своё непонимание) Может я что не допонял - извините.
главный специалист и специалист 2:да что вы кочевряжитесь, чем наша лада Калина хуже вашего мерседеса – давайте показывайте свой мерседес, что бы понимать, что в нем есть и что можно использовать.
пассажир: (пассажир подгоняет мерседес, говорит, что это лучший вариант во всем сегменте авторынка, указывает, где его произвели и конкретные плюсы для простого ОБЫВАТЕЛЯ и еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет)
главный специалист: «Всё смешалось в доме Облонских» цитирует пассажира:
Цитата
«это лучший вариант во всем сегменте авторынка»
однако, цитирует пассажира:
Цитата
«спасибо, но мне нужно без запорожца»
и, цитирует пассажира:
Цитата
«нужна всего лишь перекраска капота в исходный цвет»
Ваш "самый лучший вариант на авторынке" практически один в один с нашей ладой Калиной, предложенной специалистом 2 ранее, в котором уже есть возможность перекрасить ваш капот.
Но в принципе в вашем мерседесе действительно надо всего лишь перекрасить капот, то вот вам мой вариант - сделайте глубокий вдох и на выдохе капот будет перекрашен – всё! (занавес)grh1
еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет
Сравнение интересное. Вот только вопрос, какого цвета капот был изначально, и в каком месте вы его покрасили? Я вижу, что вы его просто простынкой прикрыли. А капот как был серобуромалиновый, так и остался.
еще раз просит, что ему нужно – всего лишь перекраска капота в исходный цвет
Сравнение интересное. Вот только вопрос, какого цвета капот был изначально, и в каком месте вы его покрасили? Я вижу, что вы его просто простынкой прикрыли. А капот как был серобуромалиновый, так и остался.RAN
Ещё бы одну строчечку кода к моему безграмотному блоку добавить и было бы счастье.
Слово «корявенко» здесь - аллегория, т.е. и имелось ввиду, что прикрыто простынкой; А если открыть капот (зайти в макрос присланного пассажиром файла), то там прямо и написано - "скорее всего не правильно". (пассажир не знал и не понимал как сделать, только интуитивно догадывался, что нужна одна строчка... которую Вы с легкостью и добавили, удалив неправильный блок пассажира). Так что всё верно.
Ещё бы одну строчечку кода к моему безграмотному блоку добавить и было бы счастье.
Слово «корявенко» здесь - аллегория, т.е. и имелось ввиду, что прикрыто простынкой; А если открыть капот (зайти в макрос присланного пассажиром файла), то там прямо и написано - "скорее всего не правильно". (пассажир не знал и не понимал как сделать, только интуитивно догадывался, что нужна одна строчка... которую Вы с легкостью и добавили, удалив неправильный блок пассажира). Так что всё верно.