Odaklanmadığında Excel'de hücre seçimini göster


26

Excel'in (2003 ve 2007) pencere odaklanmadığında hangi hücre, satır ya da sütunun seçili olduğunu göstermemesi gerçekten can sıkıcıdır. Genelde başka bir uygulamada çalışırken mevcut hücreye veya satıra bakın.

Odakta değilken hücre / satırın vurgulanmasına neden olacak herhangi bir geçici çözüm veya düzeltme var mı? Bir hücreyi (Ctrl + C) kopyalayabileceğinizi biliyorum, ancak bunu her seferinde yapmak biraz yorucu.


2
Cntrl + C iyi değil, çünkü pano
içeriğimi


Yanıtlar:


4

Bence bir iş var ama bu gerçekten senin durumuna bağlı!

Seçim değiştiğinde çalışan ve her hücrenin arka planını değiştiren bir makro oluşturabilirsiniz. Hücreyi terk ettiğinizde, satırın arka plan değerini beyaza sıfırlar ve ardından yeni satırı seçer.

Bunu Sayfa1’e Visual Basic penceresinde ekledim.

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

Bu ekran görüntüsü, uygulama odağı kaybettiğinde çekildi.

Bu can sıkıcı olabilir ancak bu özelliği açıp kapatabilecek bir düğmeyi kolayca ekleyebilirsiniz!

Negatifler (başımın üstünden: Sahip olduğunuz tüm vurgulamaları kaldıracaktır. Öyleyse sayfanızı vurguladıysanız (renkli hücreler), o zaman bunu kullanmamanız en iyisi! Ayrıca, muhtemelen vurgulanan satırlarla yazdıracak!

görüntü tanımını buraya girin


2

Gerekirse böyle bir şey yapabilirsiniz. Her ne kadar sayfaya özel olsa da

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

Bu, aktif olmayanı beyaza döndürür ve aktif hücreyi sarıya dönüştürür. ve hala pencerenin aktif olmadığını gösterir. Bunun en iyi yol olduğundan emin değilim, ama işe yarıyor


2

İşte kodun @datatoo'dan değiştirilmiş hali. Mevcut dolgu renginin kaybolmasını önlemek için önceki değerleri okur. Ayrıca, metin rengini daha da öne çıkarmak için değiştirir. Kod editöründeki Excel sayfasına ekledim (Excel'den Alt-F11).

Çalışma sayfası değişikliği etkinliği yapma hakkında bilgi için burayı tıklayın .

'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

Seçimi vurgulamak için bir şekil kullanın.

Not: Yalnızca başka bir Excel penceresine geçerken çalışır. Geçici bir çözüm olarak, boş bir Excel penceresi açabilir ve vurguyu korumak için başka bir uygulamaya geçmeden önce bu pencereye geçebilirsiniz.

Bunu ThisWorkbook kodunuza ekleyin (çalışma kitabınız, sayfanızın koduna değil). Bu çalışma kitabındaki her sayfa için işe yarayacak.

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

Kodu çimdikleyerek şekli tercihinize göre bile biçimlendirebilirsiniz.

Avantajları:

  • excel çökmelerinde elektrik kesintisi olduğunda orijinal biçimlendirmenizi kaybetmezsiniz
  • CTRL + [, aktif sayfayı değiştiren başka bir çalışma kitabından kullanırken orijinal biçimlendirmenizi kaybetmezsiniz
  • CTRL + C çözümüyle karşılaştırıldığında, diğer excel penceresinde değişiklik yaparken vurguyu kaybetmezsiniz

0

Excel 2003'te seçili olan hücre adresi sol üstte gösterilir. Hücre vurgulanmasa da, sizi yarı yolda bırakıyor.


0

Bu sorunun kalıcı bir çözümü yoktur .

bir geçici çözüm (bir süre sinir bozucu olabilir) seçildiklerinde seçili hücrelerin vurgulanmasını değiştirmek ve rengi düşürmek için tekrar seçmektir.

Bu kodu Sayfa1 kodunun arkasına yapıştırın ve elektronik tablonuza gidin ve bazı hücreleri seçin, diğerlerini seçin, sonra rengi düşüren ilkleri yeniden seçin

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

Seçim değiştiğinde hücre rengini yerleştiren basit bir çözüm

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


Yalnızca odak kaybolduğunda hücre rengini değiştiren bir Karmaşık Çözüm

Standart bir modülde:

Option Explicit    
Public s As Range

Sayfalarda çalışmasını istediğiniz sayfalarda:

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

İçinde 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


Alıntılar: basit bir çözüm off dayanır önceki cevap tarafından @Dave ; Karmaşık çözüm özellikle yardımıyla, birçok kaynaktan araya getirildi @JohnColeman içinde bu yazı .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.