Як виділити вибраний текст під час зміни фокусу в програмі Microsoft Word / Excel


49

Пов’язане з цим питанням: Показуйте виділення комірок в Excel, коли не в фокусі, за винятком випадків, коли мій випадок стосується Microsoft Word.

Коли я вибираю текст або стовпець / рядок у Microsoft Word або Excel (2003, 2007, 2010 чи 2013), він відображається таким чином у Word:

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

та Excel:

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

Однак коли я міняю фокус на іншу програму, виділений текст більше не виділяється.

Я, як правило, працюю з 2 моніторами, де один монітор містить документ / електронну таблицю, що містить дані, які мені потрібно прочитати, а другий монітор - там, де я фактично роблю роботу. Я виберу якийсь текст (або комірки), щоб він виділявся серед багатьох сторінок даних, а потім перемикаю програми, але виділений текст більше не видно.

Чи є постійне рішення цієї проблеми?


@CGTheLegend: запропоновані альтернативні рішення коштують грошей або є тимчасовими макросами, які AFAIK не працюють у кількох файлах.
glenneroo

Відповіді:


23

Швидкий спосіб усунути половину вашої проблеми (при переході з Excel в Word) - скопіювати текст. При натисканні на Ctrl + c комірки продовжуватимуть позначатись (високевизначення пропало, але навколо тексту все ще є пунктир).

Мінусом цього є те, що текст позначається лише до тих пір, поки ви тримаєте комірки, скопійовані. Це означає, що ви не можете скопіювати нічого іншого або маркування пропало. На жаль, це не буде працювати від Word до Excel.


14

Це здається ексклюзивною "функцією" Microsoft. Для більшості проектів мені потрібен лише доступ лише для читання і форматування в моєму випадку не має значення, тому я перейшов на OpenOffice, який не проявляє такої поведінки.


3
Я не думаю, що ця відповідь заслуговує найкращого рішення. Просто використання іншого додатку не є найкращим рішенням для всіх.
CGTheLegend

Мені подобається це рішення, оскільки MS не видаляла цю помилку за 100 років
Хартмут П.

Особисто я пережила LibreOffice, щоб бути більш сумісною.
Даміан Фогель

6

немає постійного рішення цієї проблеми.

вирішенням проблеми (через деякий час може стати прикрою) було б змінити виділення вибраних комірок під час їх вибору та повторно виділити їх знову, щоб скинути колір.

Вставте цей код у код Sheet1 позаду та перейдіть до таблиці та виберіть деякі комірки, виберіть інші, а потім виберіть перші, щоб скинути колір

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim cell As Range

    For Each cell In Target.Cells
        If cell.Interior.Color = RGB(60, 150, 230) Then
            cell.Interior.Pattern = xlNone
        Else
            cell.Interior.Color = RGB(60, 150, 230)
        End If
    Next
End Sub

@DaveRook ідея зміни кольору фону на події SelectionChange або Activate повинна працювати як для Excel, так і для Word.

6

Цей VBa зробить це, але передбачає, що ви НЕ використовуєте високий літер. Якщо ви є, ваше виділення зіпсується, тому не використовуйте його.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveCell.Worksheet.Cells.Interior.ColorIndex = xlNone
    ActiveCell.EntireRow.Interior.ColorIndex = 19
End Sub

Як додати VBA в MS Office?


Як масштабна робота навколо (якщо виділення не працює для вас), ви можете використовувати щось на зразок JRuler (почуйте мене :) !! ), оскільки це дозволить вам залишити лінійку на екрані з відповідним рядком над нею, тож коли ваші очі повернуться до цього екрана, ви зможете побачити, де ви були (так ви бачите, я втратив виділення, але принаймні я бачу, що я дивився на рядок 3)!

Не зрозумійте мене неправильно, це трудомістко і боляче, якщо ви багато цього робите, але це може бути достатньо для будь-якої програми (Word і Excel).

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


4

Після десяти років цієї проблеми мене також змусили горіхи, я нарешті знайшов рішення, яке працює для мене. На жаль, це не безкоштовно ... Фактичний менеджер віконмає функцію під назвою "Ігнорувати деактивацію", яку можна ввімкнути для конкретних програм. Це змушує вікно думати, що воно все ще має фокус, навіть коли цього немає. У мене це ввімкнено для всіх офісних програм, і тепер я все ще можу побачити виділений вибір, навіть якщо інше вікно має фокус. У мене також не було жодних негативних побічних ефектів. Я також використовую декілька моніторів, і ця програма містить безліч інших корисних інструментів для роботи з декількома моніторами, що також зробило це для мене корисним. Я встановив пробну версію, а потім видалив її, і вона запропонувала мені 30% знижки. Можливо, є якась безкоштовна програма, яка робить це, але я не зміг її знайти ... Я сподіваюся, що це допомагає комусь стільки, скільки мені допомогло!


На жаль, цей метод не працює для Word 2010 та Windows 7
Євген Мала

2

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

В Інтернеті доступна величезна колекція плагінів Excel. Я з’ясував, що розширення Kutools Excel (безкоштовна версія) має підкреслене вмикання / вимикання одним клацанням миші, яке залишається видимим, навіть якщо Excel не розфокусований. Також, як видається, Kutools має багато додаткових функцій, але це, безумовно, не єдиний варіант.

Ось знімок екрана Kutools з виділенням навхрест:

Знімок екрана Kutools підкреслює хрестик у дії

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


0

Вставте текстове поле, яке розтягує довжину комірок. Введіть рядок ******* подібних символів, щоб заповнити текстове поле. Ви можете перемістити текстове поле вниз по сторінці так, як на лінійці або аркуші паперу на паперовій копії. Видаліть після завершення.


0

Просте рішення, яке розміщує колір комірки, коли вибір змінюється

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Selection.Interior.ColorIndex = xlColorIndexNone
    Selection.Interior.Color = RGB(204, 204, 204)
End Sub


Комплексне рішення, яке змінює колір клітини лише тоді, коли втрачається фокус

У стандартному модулі:

Option Explicit    
Public s As Range

На аркушах, на яких ви хочете, щоб вони працювали:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set s = Selection
End Sub

В ThisWorkbook:

Private Sub Workbook_Deactivate()
    If s Is Nothing Then
        Set s = Selection
        Exit Sub
    End If
    s.Interior.ColorIndex = xlColorIndexNone
    s.Interior.Color = RGB(204, 204, 204)

    ' This is optional formatting to make the cells look more like they're actually selected
    s.Borders.Color = RGB(130, 130, 130)
    s.BorderAround _
    Color:=RGB(30, 130, 37), Weight:=xlThick
End Sub

Private Sub Workbook_Activate()
    If s Is Nothing Then
        Set s = Selection
        Exit Sub
    End If
    s.Interior.ColorIndex = xlColorIndexNone
    s.Borders.ColorIndex = xlColorIndexNone
End Sub


Цитати: Просте рішення засноване на відповіді від @Dave ; Складне рішення було зібрано з багатьох джерел, особливо за допомогою @JohnColeman у цій посаді .


0

Дуже простий спосіб зробити це за допомогою умовного форматування та VBA.

Просто додайте це до коду цієї книжки:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Application.CutCopyMode = False Then
        Application.Calculate
    End If
End Sub

та запустіть наступний код лише один раз , щоб створити правила умовного формату:

Sub CreateConditionalFormats()
  Dim y As FormatCondition
    For Each ws In ThisWorkbook.Worksheets
        DoEvents

        'Optionally delete any existing conditional formats
        'ws.Cells.FormatConditions.Delete

        ' Selection highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ROW()=CELL(""row""), COLUMN()=CELL(""col""))")
        With y.Borders(xlTop)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlBottom)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlLeft)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlRight)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False
        y.SetFirstPriority

        ' Row highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")")
        With y.Borders(xlTop)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlBottom)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False

        ' Column highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=COLUMN()=CELL(""col"")")
        With y.Borders(xlLeft)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlRight)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False
    Next
End Sub

0

Використання форми / прямокутника - це просте вирішення. Виберіть опцію "Без заповнення", і тоді ви навіть можете редагувати комірки через неї.

Подивіться на малюнок тут:

Погляньте на картинку тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.