Как сохранить выделенный текст выделенным при изменении фокуса в Microsoft Word / Excel

49

Связанный с этим вопросом: Показывать выбор ячеек в Excel, когда не в фокусе, за исключением того, что мой случай касается Microsoft Word.

Когда я выбираю текст или столбец / строку в Microsoft Word или Excel (2003, 2007, 2010 или 2013), он выделяется следующим образом в Word:

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

и Excel:

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

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

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

Есть ли постоянное решение этой проблемы?

glenneroo
источник
@CGTheLegend: предлагаемые альтернативные решения стоят денег или являются временными макросами, которые AFAIK не работают с несколькими файлами.
glenneroo

Ответы:

23

Быстрый способ исправить половину вашей проблемы (при переходе с Excel на Word) - скопировать текст. Когда вы нажмете Ctrl + c, ячейки будут по-прежнему отмечены (выделение исчезло, но у вас все еще есть пунктирная линия вокруг текста).

Недостатком этого является то, что текст помечен только при условии, что вы держите скопированные ячейки. Это означает, что вы не можете скопировать что-либо еще или маркировка исчезла. К сожалению, это не будет работать из Word в Excel.

Rubaijat
источник
14

Кажется, это эксклюзивная «фича» Microsoft. Для большинства проектов мне нужен только доступ только для чтения, и форматирование не имеет значения в моем случае, поэтому я перешел на OpenOffice, который не демонстрирует такое поведение.

glenneroo
источник
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% скидку. Может быть, есть бесплатная программа, которая делает это, но я не смог ее найти ... Надеюсь, это поможет кому-то так же, как и мне!

bskip
источник
К сожалению, этот метод не работает для Word 2010 и Windows 7
Евгений Мала
2

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

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

Вот скриншот из перекрестия изюминки Kutools в действии:

Скриншот из Kutools подсветка перекрестия в действии

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

hupiukko
источник
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.

Просто добавьте это в свой код ThisWorkbook:

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
cyberponk
источник
0

Использование формы вставки / прямоугольника - это простой обходной путь. Выберите опцию «Не заполнять», и через нее вы даже сможете редактировать ячейки.

Посмотрите на картинку здесь:

Посмотрите на картинку здесь

IvanStanic
источник