フォーカスされていないときにExcelでセル選択を表示する


26

Excel(2003および2007)が、ウィンドウにフォーカスがないときに選択されているセル、行、または列を表示しないのは本当に迷惑です。通常、別のアプリケーションで作業中に現在のセルまたは行を参照したいと思います。

焦点が合っていないときにセル/行を強調表示する回避策または修正はありますか?セル(Ctrl + C)をコピーできることは知っていますが、毎回コピーするのはちょっと面倒です。


2
クリップボードの内容を保持したいので、Cntrl + Cは良くありません
-Keltari


回答:


4

回避策があると思いますが、それは本当にあなたの状況に依存します!

選択範囲が変更され、各セルの背景が変更されると起動するマクロを作成できます。セルを「残す」と、行の背景値が白にリセットされ、新しい行が選択されます。

これをVisual BasicウィンドウのSheet1に追加しました。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cells.Interior.ColorIndex = xlColorIndexNone
    ActiveCell.EntireRow.Interior.ColorIndex = 34
End Sub

このスクリーンショットは、アプリケーションがフォーカスを失っている間に撮影されました。

これは煩わしいかもしれませんが、この機能のオン/オフを切り替えるボタンを簡単に追加できます!

ネガは(私の頭の上から:現在のハイライトを削除します。ページにハイライト(セルの色)がある場合は、これを使用しないでください!また、ハイライトされた行で印刷される可能性があります!

ここに画像の説明を入力してください


2

必要に応じて、このようなことができます。シート固有かもしれませんが

Dim wasActive As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If wasActive = Empty Then wasActive = "A1"
Range(wasActive).Interior.ColorIndex = "0"
ActiveCell.Interior.ColorIndex = "6"
wasActive = ActiveCell.Address
End Sub

これにより、アクティブでないものが白に戻り、アクティブセルが黄色に変わります。ウィンドウがアクティブでないときも表示されます。これが最善の方法であるかどうかはわかりませんが、動作します


2

@datatooからのコードの変更を次に示します。前の値を読み取り、現在の塗りつぶし色が失われないようにします。また、テキストの色を変更してさらに目立つようにします。コードエディター(ExcelのAlt-F11)でExcelシートに追加しました。

ワークシート変更イベントの作成については、ここをクリックてください。

'VBA code for Excel to show active cell in worksheet when worksheet is out of focus

Dim wasActive As String
Dim originalFillColor As String
Dim originalTextColor As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Set up colors on load
    If wasActive = Empty Then
        wasActive = "A1"
        originalFillColor = Range(wasActive).Interior.Color
        originalTextColor = Range(wasActive).Font.Color
    End If

    'Reset previous cell to original color values; If statement prevents removal of grid lines by using "0" for clear fill color when white
    If originalFillColor = 16777215 Then
        Range(wasActive).Interior.ColorIndex = "0"
        Range(wasActive).Font.Color = originalTextColor
    Else
        Range(wasActive).Interior.Color = originalFillColor
        Range(wasActive).Font.Color = originalTextColor
    End If

    'Set new colors and change active cell to highlighted colors (black fill with white text)
    originalFillColor = ActiveCell.Interior.Color
    originalTextColor = ActiveCell.Font.Color
    wasActive = ActiveCell.Address
    ActiveCell.Interior.ColorIndex = "1"
    ActiveCell.Font.ColorIndex = "2"

End Sub

1

図形を使用して、選択範囲を強調表示します。

注:別のExcelウィンドウに切り替えた場合にのみ機能します。回避策として、空のExcelウィンドウを開いてこのウィンドウに切り替えてから、別のアプリケーションに切り替えてハイライトを維持することができます。

これをThisWorkbookcode(シートのコードではなく、workBOOK)に追加するだけです。これは、ワークブックのすべてのシートで機能します。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    DeleteSelectionHighlight
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    DeleteSelectionHighlight
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
  On Error Resume Next
    Dim shp As Shape
    Application.ScreenUpdating = False

    Set shp = ActiveSheet.Shapes("SelectionHighlight")
    If Err.Number <> 0 Then
        Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1)
        With shp 'Format shape to your preference
            .Name = "SelectionHighlight"
            .Line.ForeColor.RGB = RGB(226, 0, 0) ' Border color
            .Line.Weight = 1.5
            .Line.DashStyle = msoLineSolid
            .Fill.Visible = msoFalse 'No background
            '.Fill.ForeColor.RGB = RGB(0, 153, 0) 'Background color
            '.Fill.Transparency = 0.95 'Background transparency
        End With
    End If

    Dim oldZoom As Integer
    oldZoom = Wn.Zoom
    Wn.Zoom = 100 'Set zoom at 100% to avoid positioning errors
    With shp
        .Top = Wn.Selection.Top   'Tweak the offset to fit your desired line weight
        .Left = Wn.Selection.Left 'Tweak the offset to fit your desired line weight
        .Height = Wn.Selection.Height
        .Width = Wn.Selection.Width
    End With
    Wn.Zoom = oldZoom 'Restore previous zoom
    Application.ScreenUpdating = True
End Sub

Private Sub DeleteSelectionHighlight()
  On Error Resume Next
  Dim shp As Shape
    Set shp = ActiveSheet.Shapes("SelectionHighlight")
    shp.Delete
End Sub

コードを調整することで、形状を好みに合わせてフォーマットすることもできます。

利点は次のとおりです。

  • あなたのExcelのクラッシュが停電に陥った場合、元のフォーマットを失うことはありません
  • アクティブなシートを変更する別のブックからCTRL + [を使用しても、元の書式は失われません
  • CTRL + Cソリューションと比較して、他のExcelウィンドウに変更を加えてもハイライトが失われない

0

Excel 2003では、現在選択されているセルアドレスが左上に表示されます。セルは強調表示されていませんが、途中まで移動します。


0

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

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

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

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の助けを借りて、多くのソースから集められました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.