Zeigen Sie die Zellenauswahl in Excel an, wenn Sie nicht im Fokus sind

26

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 steht. Normalerweise möchte ich bei der Arbeit in einer anderen Anwendung auf die aktuelle Zelle oder Zeile verweisen.

Gibt es eine Problemumgehung oder Fehlerbehebung, durch die die Zelle / Zeile hervorgehoben wird, wenn sie nicht fokussiert ist? Ich weiß, dass Sie eine Zelle kopieren können (Strg + C), aber das ist jedes Mal etwas mühsam.

salle
quelle
2
Cntrl + C ist nicht gut, da ich meinen Inhalt in der Zwischenablage behalten möchte
Keltari

Antworten:

4

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

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

Ich habe dies 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, während die Anwendung den Fokus verloren hatte.

Das mag ärgerlich sein, aber Sie können leicht eine Schaltfläche hinzufügen, mit der Sie diese Funktion ein- oder ausschalten können!

Die Negative sind (von oben auf meinem Kopf: Es werden alle aktuellen Hervorhebungen entfernt. Wenn Sie also Hervorhebungen auf Ihrer Seite haben (Zellen farbig), sollten Sie diese nicht verwenden! Außerdem wird sie wahrscheinlich mit den hervorgehobenen Zeilen gedruckt!

Bildbeschreibung hier eingeben

Dave
quelle
2

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 in Weiß und die aktive Zelle in Gelb geändert. und zeigt immer noch, wenn das Fenster nicht aktiv ist. Ich bin mir nicht sicher, ob dies der beste Weg ist, aber er funktioniert

datatoo
quelle
2

Hier ist eine Modifikation des Codes von @datatoo. Es liest die vorherigen Werte, um zu verhindern, dass die aktuelle Füllfarbe verloren geht. Es ändert auch die Textfarbe, um sie hervorzuheben. Ich habe es der Excel-Tabelle im Code-Editor hinzugefügt (Alt-F11 aus Excel).

Klicken Sie hier, um Informationen zum Durchführen eines Arbeitsblattänderungsereignisses zu erhalten.

'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
bstrong
quelle
1

Verwenden Sie eine Form, um die Auswahl hervorzuheben.

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

Fügen Sie dies einfach Ihrem ThisWorkbook-Code hinzu (Ihrem workBOOK, nicht Ihrem Sheet-Code). 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 nicht Ihre ursprüngliche Formatierung, wenn Sie einen Stromausfall haben
  • Sie verlieren nicht Ihre ursprüngliche Formatierung, wenn Sie STRG + [aus einer anderen Arbeitsmappe verwenden, die das aktive Blatt ändert
  • Sie verlieren die Hervorhebung nicht, wenn Sie im Vergleich zur STRG + C-Lösung Änderungen am anderen Excel-Fenster vornehmen
Cyberponk
quelle
0

In Excel 2003 wird die aktuell ausgewählte Zellenadresse oben links angezeigt. Obwohl die Zelle nicht markiert ist, gelangen Sie auf halbem Weg dorthin.

Michaelkay
quelle
0

Für dieses Problem gibt es keine dauerhafte Lösung .

Eine Problemumgehung (kann mit der Zeit ärgerlich werden) wäre, die Hervorhebung der ausgewählten Zellen zu ändern, während sie ausgewählt sind, und sie erneut auszuwählen, um die Farbe zu löschen.

Stecken Sie diesen Code in den Code von Blatt1, gehen Sie zu Ihrer Tabelle und markieren Sie einige Zellen, markieren Sie andere und markieren Sie die ersten Zellen erneut, um die Farbe abzulegen

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

quelle
0

Eine einfache Lösung , die eine Zellenfarbe platziert, wenn sich die Auswahl ändert

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Selection.Interior.ColorIndex = xlColorIndexNone
    Selection.Interior.Color = RGB(204, 204, 204)
End Sub


Eine komplexe Lösung , die die Zellenfarbe nur ändert, wenn der Fokus verloren geht

In einem Standardmodul:

Option Explicit    
Public s As Range

In den Arbeitsblättern soll es funktionieren in:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set s = Selection
End Sub

In 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


Zitate: Die einfache Lösung basiert auf einer vorherigen Antwort von @Dave ; Die komplexe Lösung wurde aus vielen Quellen zusammengetragen, insbesondere mit Hilfe von @JohnColeman in diesem Beitrag .

Travis Heeter
quelle