Anzeigen der Zellauswahl in Excel, wenn diese nicht im Fokus ist

Anzeigen der Zellauswahl in Excel, wenn diese nicht im Fokus ist

Es ist wirklich ärgerlich, dass Excel (2003 und 2007) nicht anzeigt, welche Zelle, Zeile oder Spalte ausgewählt ist, wenn das Fenster nicht im Fokus ist. Normalerweise möchte ich auf die aktuelle Zelle oder Zeile verweisen, während ich in einer anderen Anwendung arbeite.

Gibt es eine Problemumgehung oder einen Fix, mit dem die Zelle/Zeile hervorgehoben wird, wenn sie nicht im Fokus ist? Ich weiß, dass man eine Zelle kopieren kann (Strg+C), aber es ist ziemlich mühsam, das jedes Mal zu tun.

Antwort1

Ich denke, es gibt eine Lösung, aber es hängt wirklich von Ihrer Situation ab!

Sie können ein Makro erstellen, das ausgelöst wird, wenn sich die Auswahl ändert, und das einfach den Hintergrund jeder Zelle ändert. Wenn Sie die Zelle „verlassen“, wird der Hintergrundwert der Zeile auf Weiß zurückgesetzt und dann die neue Zeile ausgewählt.

Ich habe dies zu meinem Sheet1 im Visual Basic-Fenster hinzugefügt.

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

Dieser Screenshot wurde aufgenommen, als die Anwendung den Fokus verloren hatte.

Das ist zwar möglicherweise ärgerlich, Sie könnten jedoch ganz einfach eine Schaltfläche hinzufügen, mit der Sie diese Funktion ein- oder ausschalten können!

Die Nachteile sind (aus dem Stegreif): Es werden alle aktuellen Hervorhebungen entfernt. Wenn Sie also Hervorhebungen auf Ihrer Seite haben (farbige Zellen), verwenden Sie dies besser nicht! Außerdem wird es wahrscheinlich mit den hervorgehobenen Zeilen drucken!

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Änderung des Codes von @datatoo. Er liest die vorherigen Werte, um zu verhindern, dass die aktuelle Füllfarbe verloren geht. Außerdem ändert er die Textfarbe, um sie besser hervorzuheben. Ich habe ihn im Code-Editor (Alt-F11 aus Excel) zum Excel-Blatt hinzugefügt.

KlickenHierfür Informationen zum Durchführen eines Arbeitsblattänderungsereignisses.

'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

Antwort3

Sie können so etwas tun, wenn Sie müssen. Obwohl es blattspezifisch sein könnte

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

Dadurch wird das, was nicht aktiv ist, wieder weiß und die aktive Zelle wird gelb. Es wird immer noch angezeigt, wenn das Fenster nicht aktiv ist. Ich bin nicht sicher, ob das der beste Weg ist, aber es funktioniert.

Antwort4

Verwenden Sie eine Form, um die Auswahl hervorzuheben.

Hinweis: Dies funktioniert nur, wenn Sie zu einem anderen Excel-Fenster wechseln. Um dies zu umgehen, können Sie ein leeres Excel-Fenster öffnen und zu diesem Fenster wechseln, bevor Sie zu einer anderen Anwendung wechseln, um die Hervorhebung beizubehalten.

Fügen Sie dies einfach zu Ihrem ThisWorkbook-Code hinzu (Ihrem workBOOK, nicht dem Code Ihres Blatts). Dies funktioniert für jedes Blatt in Ihrer Arbeitsmappe.

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

Sie können die Form sogar nach Ihren Wünschen formatieren, indem Sie den Code anpassen.

Die Vorteile sind:

  • Sie verlieren Ihre ursprüngliche Formatierung nicht, wenn Excel abstürzt oder ein Stromausfall auftritt
  • Sie verlieren Ihre ursprüngliche Formatierung nicht, wenn Sie STRG+[ aus einer anderen Arbeitsmappe verwenden, die das aktive Blatt ändert
  • Sie verlieren die Markierung nicht, wenn Sie Änderungen im anderen Excel-Fenster vornehmen, im Vergleich zur STRG+C-Lösung

verwandte Informationen