Могу ли я использовать VBA, чтобы Excel забыл, что он следовал по гиперссылке? - PullRequest
2 голосов
/ 06 февраля 2020

Я использую условное форматирование, чтобы повлиять на цвет шрифта для определенных ячеек, содержащих гиперссылки в таблице. Когда я перехожу по гиперссылке, она переопределяет условное форматирование в ячейке, что нежелательно.

Условное форматирование по существу делает текст невидимым, если ячейка, расположенная непосредственно над текущей ячейкой, имеет то же значение. Он использует формулу (=C5=C6), примененную ко всему диапазону ($C$6:$C$24).

То, что я пробовал:

  • Закрытие и повторное открытие файла устраняет проблему потому что он сбрасывает все последующие гиперссылки обратно на обычные гиперссылки. Однако я не хочу закрывать и снова открывать все время.
  • Я могу использовать событие Worksheet_FollowHyperlink, чтобы изменить цвет шрифта обратно, но когда я сортирую таблицу по-другому (изменяя таким образом как должно действовать условное форматирование), условное форматирование по-прежнему отключено - теперь в пользу цвета шрифта, применяемого программно.

Этот вопрос по сути является обновлением моего предыдущего поста ( Есть ли способ заставить условное форматирование игнорировать флаг FollowedHyperlink? ). Я больше не использую формулу HYPERLINK, поскольку это не позволяет мне использовать параметр Worksheet_FollowHyperlink, указанный в ответе.

Я также прочитал предоставленную ветку SuperUser (https://superuser.com/questions/728825/how-do-i-prevent-excel-from-changing-the-color-of-a-clicked-link/819931), который предоставил некоторые другие интересные пути, но не совсем привел меня туда, где я должен был быть. Сейчас я специально спрашиваю, могу ли я сбросить память Excel, по которой следовали гиперссылки.

Это нужно, как до, так и после нажатия на ссылку:

enter image description here

Это нежелательное поведение, которое я получаю после нажатия на ссылку:

enter image description here

Ответы [ 4 ]

2 голосов
/ 06 февраля 2020

Вы не раскрыли, какой формат вы используете в вашем CF, но я предполагаю, что он устанавливает цвет текста на белый.

Гораздо лучший общий формат для сокрытия содержимого ячеек - ;;;. Если вы используете это в своем CF, то гиперссылка будет скрыта

2 голосов
/ 06 февраля 2020

Что-то вроде следующего , кажется, работает , чтобы сохранить стиль гиперссылки без изменений - в основном, просто добавьте гиперссылку в ту же ячейку:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    With Target
        .Range.Hyperlinks.Add .Range, .Address, .SubAddress, , .TextToDisplay
    End With
End Sub

ScreenTip было вызывая проблемы, поэтому я намеренно пропустил его - гиперссылка, с которой я тестировал, не имела подсказки на экране.

Если на самом деле это работает для вашего случая, чтобы сделать его более надежным, я бы протестировал длину SubAddress , ScreenTip и TextToDisplay, прежде чем пытаться использовать их в Hyperlinks.Add. Все они являются необязательными параметрами, и для выбранной гиперссылки эти свойства могут не начинаться.

2 голосов
/ 06 февраля 2020

Это сработало для меня и не помешало условному форматированию:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    With Target.Range
        .Font.Color = vbBlue
        .Font.Underline = True
    End With

End Sub
0 голосов
/ 06 февраля 2020

Итак, вот обходной путь, который я только что выяснил ... наконец. Все еще не лучший ответ, и все еще не отвечает на конкретный c вопрос о том, как заставить Excel забыть, что он следовал по определенной ссылке c, поэтому я хотел бы все еще видеть лучшие ответы.

Но это сделано, что я хотел сделать ... по большей части.

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    Target.Range.Style = "Followed Hyperlink"

End Sub

Установка стиля "Followed Hyperlink" с кодом выше, на удивление, делает трюк , Как отмечалось в предыдущих комментариях, Excel не использует этот стиль, хотя выглядит так. Установка его вручную с помощью VBA, по-видимому, позволяет условному форматированию функционировать.

Недостаток: закрытие и открытие книги больше не сбрасывает цвет. Обходной путь может состоять в том, чтобы изменить стиль «Гиперссылка» на тот же, что и стиль «Гиперссылка», но тогда никакие ссылки во всей книге не будут иметь фиолетовый цвет. Таким образом, это все еще не самый оптимальный ответ.

РЕДАКТИРОВАТЬ: я должен дать понять, что при использовании этой опции применяется стиль «Followed Hyperlink» (фиолетовый текст). Однако он не отменяет условное форматирование, которое было самой большой частью проблемы.

...