41

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

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

и Excel:

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

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

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

10 ответов10

20

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

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

13

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

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
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

После десяти лет, когда эта проблема сводила меня с ума, я наконец нашел решение, которое работает для меня. К сожалению это не бесплатно ... В Actual Window Manager есть функция "Игнорировать деактивацию", которая может быть включена для определенных приложений. Это заставляет окно думать, что оно все еще имеет фокус, даже когда оно не имеет. Я включил это для всех офисных приложений, и теперь я все еще могу видеть выделенный выбор, даже когда другое окно имеет фокус. У меня также не было никаких негативных побочных эффектов. Я также использую несколько мониторов, и в этой программе есть множество других полезных инструментов для работы с несколькими мониторами, что сделало его полезным для меня. Я установил пробную версию, а затем удалил ее, и она предложила мне 30% скидку. Может быть, есть бесплатная программа, которая делает это, но я не смог ее найти ... Надеюсь, это поможет кому-то так же, как и мне!

1

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

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

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

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

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

0

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

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

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

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
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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .