Hiển thị lựa chọn ô trong Excel khi không tập trung


26

Thật khó chịu khi Excel (2003 và 2007) không hiển thị ô, hàng hoặc cột nào được chọn khi cửa sổ không nằm trong tiêu điểm. Tôi thường muốn tham khảo ô hoặc hàng hiện tại trong khi làm việc trong một ứng dụng khác.

Có cách giải quyết hoặc sửa lỗi nào sẽ làm cho ô / hàng được tô sáng khi không được lấy nét không? Tôi biết rằng bạn có thể sao chép một ô (Ctrl + C) nhưng thật mệt mỏi khi làm điều đó mỗi lần.


2
Cntrl + C không tốt, vì tôi muốn giữ nội dung trong bảng tạm của mình
Keltari


Câu trả lời:


4

Tôi nghĩ rằng có một công việc xung quanh nhưng, nó thực sự phụ thuộc vào tình huống của bạn!

Bạn có thể tạo một macro kích hoạt khi lựa chọn thay đổi và nó chỉ đơn giản là thay đổi nền của từng ô. Khi bạn 'rời khỏi' ô, nó sẽ đặt lại giá trị nền của hàng thành màu trắng và sau đó chọn hàng mới.

Tôi đã thêm nó vào Sheet1 của mình trong cửa sổ Visual Basic.

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

Ảnh chụp màn hình này được chụp trong khi ứng dụng bị mất nét.

Điều này có thể gây phiền nhiễu nhưng bạn có thể dễ dàng thêm một nút có thể bật hoặc tắt tính năng này!

Các tiêu cực là (từ trên đỉnh đầu của tôi: Nó sẽ xóa bất kỳ đánh dấu hiện tại nào bạn có. Vì vậy, nếu bạn đã tô sáng trên trang của bạn (ô màu) thì tốt nhất không sử dụng cái này! Ngoài ra, nó có thể sẽ in với các hàng được tô sáng!

nhập mô tả hình ảnh ở đây


2

Bạn có thể làm một cái gì đó như thế này nếu bạn cần. Mặc dù nó có thể là tờ cụ thể

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

Điều này thay đổi những gì không hoạt động trở lại màu trắng và thay đổi kích hoạt thành màu vàng. và vẫn hiển thị khi cửa sổ không hoạt động. Không chắc đây là cách tốt nhất, nhưng nó hoạt động


2

Đây là một sửa đổi của mã từ @datatoo. Nó đọc các giá trị trước đó để tránh mất màu tô hiện tại. Nó cũng thay đổi màu văn bản để làm cho nó nổi bật hơn nữa. Tôi đã thêm nó vào bảng Excel trong trình chỉnh sửa mã (Alt-F11 từ Excel).

Nhấn vào đây để biết thông tin về việc thực hiện một sự kiện thay đổi bảng tính.

'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

Sử dụng một hình dạng để làm nổi bật các lựa chọn.

Lưu ý: Nó chỉ hoạt động khi chuyển sang cửa sổ Excel khác. Như một giải pháp thay thế, bạn có thể mở một cửa sổ Excel trống và chuyển sang cửa sổ này trước khi chuyển sang một ứng dụng khác để giữ điểm nhấn.

Chỉ cần thêm mã này vào ThisWorkbookcode của bạn (workBOOK của bạn, không phải mã sheets của bạn). Điều này sẽ làm việc cho mỗi tờ trong sổ làm việc của bạn.

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

Bạn thậm chí có thể định dạng hình dạng theo sở thích của mình bằng cách điều chỉnh mã.

Những ưu điểm là:

  • bạn không mất định dạng ban đầu khi excel gặp sự cố mất điện
  • Bạn không mất định dạng ban đầu khi sử dụng CTRL + [từ một sổ làm việc khác thay đổi trang tính hoạt động
  • Bạn không thể làm nổi bật khi thay đổi cửa sổ excel khác trong khi so sánh với giải pháp CTRL + C

0

Trong Excel 2003, địa chỉ ô hiện được chọn được hiển thị ở phía trên bên trái. Mặc dù ô không được tô sáng, nhưng nó sẽ đưa bạn đến đó.


0

không có giải pháp lâu dài cho vấn đề này

một cách giải quyết (có thể gây khó chịu trong một thời gian) sẽ là thay đổi phần tô sáng của các ô đã chọn trong khi chúng được chọn và chọn lại chúng một lần nữa để thả màu.

Dán mã này vào mã Sheet1 phía sau và chuyển đến bảng tính của bạn và chọn một số ô, chọn các ô khác sau đó chọn lại các ô đầu tiên để thả màu

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

Một giải pháp đơn giản đặt màu ô khi lựa chọn thay đổi

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


Giải pháp phức tạp chỉ thay đổi màu ô khi mất tiêu điểm

Trong một mô-đun tiêu chuẩn:

Option Explicit    
Public s As Range

Trong (các) trang tính bạn muốn nó hoạt động trong:

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

Trong 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


Trích dẫn: Giải pháp đơn giản dựa trên câu trả lời trước của @Dave ; Giải pháp phức tạp đã được tập hợp từ nhiều nguồn, đặc biệt là với sự giúp đỡ của @JohnColeman trong bài đăng này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.