在Microsoft Word / Excel中更改焦点时如何保持所选文本突出显示


49

与此问题相关:除我的案例与Microsoft Word有关外,在焦点不突出时在Excel中显示单元格选择

当我在Microsoft Word或Excel(2003、2007、2010或2013)中选择文本或列/行时,它在Word中以如下方式突出显示:

在此处输入图片说明

和Excel:

在此处输入图片说明

但是,当我将焦点更改为另一个程序时,突出显示的文本不再突出显示。

我通常使用2个监视器,其中一个监视器包含一个文档/电子表格,其中包含我需要读取的数据,而另一个监视器则是我实际在其中工作的位置。我将选择一些文本(或单元格)使其在众多数据页面中脱颖而出,然后切换程序,但是突出显示的文本不再可见。

有永久解决此问题的方法吗?


@CGTheLegend:提供的替代解决方案要花钱,或者是AFAIK无法跨多个文件使用的临时宏。
glenneroo

Answers:


23

解决一半问题(从Excel切换到Word时)的快速方法是复制文本。当您按Ctrl + c时,单元格将继续被标记(高亮已消失,但文本周围仍带有虚线)。

不利的一面是,只要您保留复制的单元格,就仅标记文本。意味着您无法复制其他任何内容,或者标记消失了。不幸的是,这无法从Word到Excel。


14

这似乎是微软独有的“功能”。对于大多数项目,我只需要只读访问权限,格式化对我而言并不重要,因此我已切换到不显示此行为的OpenOffice。


3
我认为这个答案不应该是最好的解决方案。对于每个人来说,仅使用不同的应用程序都不是最佳的解决方案。
CGTheLegend '17

我喜欢这种解决方案,因为MS
Hartmut P.

就我个人而言,我经历过LibreOffice更加兼容。
Damian Vogel

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更改SelectionSelect或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

如何在MS Office中添加VBA?


作为一项繁重的工作(如果突出显示对您不起作用),您可以使用JRuler之类的东西(听我说:)!),因为这将使您可以将标尺留在屏幕上,并将有问题的行留在屏幕上,这样当您的视线回到该屏幕时,您可以看到自己所在的位置(这样您就可以看到,我丢失了突出显示的内容,但至少可以看到我在看第3行)!

别误会我的意思,如果您经常这样做,这会很麻烦并且很痛苦,但是,对于任何程序(Word和Excel)而言,这都足够了。

在此处输入图片说明


4

在经历了十年的这个问题之后,我也发疯了,终于找到了对我有用的解决方案。不幸的是,它不是免费的... 实际的窗口管理器具有称为“忽略停用”的功能,可以为特定应用启用。这使窗口认为它即使没有也仍然具有焦点。我已为所有Office应用程序启用了此功能,现在即使另一个窗口具有焦点,我仍然可以看到突出显示的选择。我也没有任何负面副作用。我也使用多台显示器,该程序还有很多其他有用的工具可用于多台显示器,这对我来说很值得。我安装了试用版,然后将其卸载了,它为我提供了30%的折扣。可能有一个免费的程序可以做到这一点,但我找不到一个……我希望这能对某人有所帮助!


不幸的是,此方法不适用于Word 2010和Windows 7
Eugene Mala '18

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


引用:简单的解决方案是基于脱答案@戴夫 ; 复杂的解决方案是从许多来源汇集在一起​​的,尤其是在本帖子@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

0

使用插入形状/矩形是一种简单的解决方法。选择“不填充”选项,然后您甚至可以通过它编辑单元格。

看看这里的图片:

看看这里的照片

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.