web-dev-qa-db-ja.com

Microsoft Word / Excelでフォーカスが変更されたときに選択したテキストを強調表示する方法

この質問に関連して: フォーカスがないときにExcelでセルの選択を表示 私のケースがMicrosoft Wordに関係している場合を除きます。

Microsoft WordまたはExcel(2003、2007、2010、または2013)でテキストまたは列/行を選択すると、Wordでは次のように強調表示されます。

enter image description here

およびExcel:

enter image description here

ただし、フォーカスを別のプログラムに変更すると、強調表示されたテキストが強調表示されなくなります。

私は通常、2つのモニターを使用します。1つのモニターには、読み取る必要のあるデータを含むドキュメント/スプレッドシートが含まれ、もう1つのモニターは、実際に作業を行う場所です。いくつかのテキスト(またはセル)を選択して、データの多くのページで目立つようにしてから、プログラムを切り替えますが、強調表示されたテキストは表示されなくなります。

この問題に対する永続的な解決策はありますか?

50
glenneroo

これは、Microsoft独自の「機能」のようです。ほとんどのプロジェクトでは、読み取り専用アクセスのみが必要で、私の場合はフォーマットは重要ではないため、この動作を示さないOpenOfficeに切り替えました。

14
glenneroo

問題の半分(ExcelからWordに切り替える場合)をすばやく修正する方法は、テキストをコピーすることです。 Ctrl + cを押すと、セルは引き続きマークされます(highligthingはなくなりましたが、テキストの周りにはまだ点線があります)。

これの欠点は、コピーしたセルを保持している限り、テキストのみがマークされることです。他には何もコピーできないか、マーキングがなくなったことを意味します。残念ながら、これはWordからExcelでは機能しません。

25
Rubaijat

この問題には永続的な解決策はありません。

回避策(しばらく迷惑になる場合があります)は、選択されているセルの強調表示を変更し、再度選択して色を落とすことです。

このコードを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
user222864

この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)でも十分な場合があります。

enter image description here

6
Dave

この問題が10年間続いた後、私も気が散るようになり、やっと自分に役立つ解決策を見つけました。残念ながら無料ではありません... 実際のウィンドウマネージャー には、特定のアプリに対して有効にできる「非アクティブ化を無視する」と呼ばれる機能があります。これにより、ウィンドウはフォーカスがない場合でもフォーカスがあると見なします。すべてのOfficeアプリでこれをオンにしたので、別のウィンドウにフォーカスがあるときでも、強調表示された選択を表示できます。私はどんな副作用も持っていません。私はマルチモニターも使用しています。このプログラムには、マルチモニターを操作するための他の便利なツールがたくさんあり、私にとってはそれだけの価値があります。試用版をインストールしてからアンインストールすると、30%割引になります。これを行う無料のプログラムがあるかもしれませんが、見つかりませんでした...これが私を助けてくれたのと同じくらい誰かに役立つことを願っています!

4
bskip

私はこれと同じ問題に長い間苦しんでいました。複数の画面を使用しているとき、私も密集したExcelファイルで迷子になります。

インターネットで利用できるExcelプラグインの膨大なコレクションがあります。私はKutools Excel拡張(無料版)にワンクリックのオン/オフハイライトの十字線があり、Excelがフォーカスされていなくても表示されたままであることを発見しました。 Kutoolsにも多くの追加機能があるようですが、利用できる唯一のオプションではありません。

以下は、Kutoolsのクロスヘアのハイライトのスクリーンショットです。

Screenshot of Kutools highlight cross-hair in action

一部の人がサードパーティのプラグインやツールを恐れていることは知っていますが、それらを使用することがおそらく最も速くて簡単なオプションです。

2
hupiukko

挿入形状/長方形の使用は、簡単な回避策です。 「塗りつぶしなし」オプションを選択すると、それを介してセルを編集することもできます。

こちらの写真をご覧ください。

Take a look at the picture here

0
IvanStanic

これを行う非常に簡単な方法は、条件付き書式と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

次のコード1回のみを実行して、条件付き書式ルールを作成します。

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
cyberponk

シンプルなソリューション 選択が変更されたときにセルの色を配置します

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 による an answer に基づいています。複雑なソリューションは、特に この投稿@ JohnColeman の助けを借りて、多くのソースからまとめられました。
0
Travis Heeter

そもそもこの質問をしなければならなかったのはおかしいですが、Microsoftがそれを修正するのに向いていないように思われるので、問題と同じくらい愚かな解決策があります。

RDP(リモートデスクトップ)を別のPCに移動し、Excel/Wordの「ソース」コピー(選択を表示したままにする場所)を起動します。別のインスタンスを自分のPCでローカルに実行します。

フォーカスをリモートからローカルウィンドウに変更しても、リモートインスタンスでの選択は非表示になりませんが(Word/ExcelウィンドウがRDPセッション内でアクティブなウィンドウのままであることを確認してください)、引き続きクリップボードなどを使用できます。

RDPのドライブ共有機能を利用して、リモートマシンが自分のマシンで直接、開きたいファイルにアクセスできるようにすることができます。

0
Luc VdV

セルの長さを拡大するテキストボックスを挿入します。テキストボックスを塗りつぶすために*******同様の文字の行を入力します。ルーラーやハードコピーの紙と同じように、テキストボックスをページの下に移動できます。完了したら削除します。

0
BAS