Курсор и выделение невидимы при потере фокуса

15

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

Это чертовски раздражает меня, так как делает Excel практически непригодным для большинства задач, в которых я нуждаюсь:

  • отслеживание тестовых случаев при выполнении тестирования в другом окне

  • получение данных в другом месте и перенос их в Excel

(Я никогда не видел такого поведения в других приложениях и даже не могу придумать оправдания для этого.)

Возможно ли отключить это поведение, т.е. сохранить видимость выделения, когда не в фокусе?

Редактировать: Вопреки тому, что я думал, когда первоначально опубликовал это, это не «новая функция», это скорее прагма пользовательского интерфейса, которую MS придерживается в большинстве своих приложений (по крайней мере, с некоторого момента времени), хотя приложения не MS или некоторые устаревшие приложения MS не всегда уважают это.

Алоис Махдал
источник
1
Я согласен, кто-то не задумывался о сценариях использования для Excel, когда они установили поведение по умолчанию.
AnthonyVO

Ответы:

7

В этом посте описан один обходной путь , который не требует использования VBA / макросов:

Копирование содержимого в буфер обмена поместит пунктирную рамку вокруг выделенных ячеек, которая останется, когда окна Excel потеряют фокус.

Выделите соответствующую строку, щелкнув номер строки слева от строки, затем нажмите Ctrl- C/ Cmd- C.

Рексфорд
источник
Хороший, простой обходной путь.
101100
4

Это нормальное поведение для Windows. Это не относится к Excel. То же самое происходит, если вы выбираете текст в Word, а затем меняете окна. Его нельзя отключить.

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

Добавьте эти фрагменты кода в VBA Explorer ( Alt+ F11), ThisWorkbookи вы можете вызывать их из макросов ( Alt+ F8) или добавлять для них кнопки.

Sub RowHighlight()
  Rows(ActiveCell.Row).Select
  With Selection.Interior
    .Pattern = xlSolid
    .ColorIndex = 6  'Change this number to the color of choice.
  End With
End Sub

Sub RemHighlight()
  Rows(ActiveCell.Row).Select
  With Selection.Interior
    .Pattern = xlNone
  End With
End Sub

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

введите описание изображения здесь

CharlieRB
источник
Интересная идея. Вы должны быть осторожны при этом, потому что это приведет к потере любого форматирования заливки в активной строке. Кроме того, было бы более полезно связать это с событием рабочего листа - в противном случае было бы более разумно просто вручную менять цвет заливки каждый раз, когда вам нужно отслеживать активную ячейку, находясь в другом окне.
Excellll
2
«Это нормальное поведение для Windows. Это не относится к Excel». Вы правы, что это не специфично для Excel - действительно, Word ведет себя так же, но я бы не назвал это нормальным. Например, в Блокноте или в большинстве программ, которые я использую , такое поведение не работает (Notepad ++, PSPad, Sumatra PDF reader ). Это ведет себя так в родных текстовых полях, таких как «Run ...». (Так странно, я никогда этого не замечал.)
Алоис Махдал
Версия Excel для OSX реализована точно таким же образом, что ограничивает возможности ее использования, как указано в OP.
Рексфорд
@CharlieRB Нет, это не поведение операционной системы, а поведение в Excel отличается от поведения в Word. Word использует текстовое поле с курсором, и курсор не будет мигать, если окно теряет фокус. Это нормально, так как я могу вручную пометить некоторый текст. В Excel, однако, это совершенно другое. Он использует собственный механизм рисования для ячеек и помечает специальные поля в столбце и строке (на желтом фоне). Это относится только к Excel, и это глупое поведение. Мне слишком часто приходится копировать / сравнивать данные из другого окна, и там нет абсолютно никакой маркировки ...
StanE