Tampilkan pemilihan sel di Excel saat tidak fokus

26

Sangat menyebalkan bahwa Excel (2003 dan 2007) tidak menunjukkan sel, baris, atau kolom apa yang dipilih ketika jendela tidak fokus. Saya biasanya ingin merujuk ke sel atau baris saat ini saat bekerja di aplikasi lain.

Apakah ada solusi atau perbaikan yang akan membuat sel / baris disorot saat tidak fokus? Saya tahu bahwa Anda dapat menyalin sel (Ctrl + C) tetapi agak melelahkan untuk melakukannya setiap waktu.

salle
sumber
2
Cntrl + C tidak baik, karena saya ingin menyimpan konten clipboard saya
Keltari

Jawaban:

4

Saya pikir ada pekerjaan di sekitar tetapi, itu benar-benar tergantung pada situasi Anda!

Anda bisa membuat makro yang menyala saat seleksi berubah dan itu hanya mengubah latar belakang setiap sel. Ketika Anda 'meninggalkan' sel itu akan mengatur ulang nilai latar belakang baris ke putih dan kemudian pilih baris baru.

Saya menambahkan ini ke Sheet1 saya di jendela Visual Basic.

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

Cuplikan layar ini diambil saat aplikasi kehilangan fokus.

Ini mungkin mengganggu tetapi Anda dapat dengan mudah menambahkan tombol yang dapat mengaktifkan atau menonaktifkan fitur ini!

Negatifnya adalah (dari atas kepala saya: Ini akan menghapus semua penyorotan yang Anda miliki. Jadi, jika Anda memiliki penyorotan pada halaman Anda (sel-sel berwarna) maka sebaiknya jangan gunakan ini! Juga, itu mungkin akan dicetak dengan baris yang disorot!

masukkan deskripsi gambar di sini

Dave
sumber
2

Anda dapat melakukan sesuatu seperti ini jika perlu. Meskipun mungkin spesifik lembar

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

Ini mengubah apa yang tidak aktif kembali menjadi putih, dan mengubah sel diaktifkan menjadi kuning. dan masih menunjukkan ketika jendela tidak aktif. Tidak yakin ini adalah cara terbaik, tetapi berhasil

datatoo
sumber
2

Ini adalah modifikasi kode dari @datatoo. Bunyinya nilai sebelumnya untuk mencegah kehilangan warna isian saat ini. Itu juga mengubah warna teks untuk membuatnya lebih menonjol. Saya menambahkannya ke lembar Excel di editor kode (Alt-F11 dari Excel).

Klik di sini untuk informasi tentang membuat acara perubahan lembar kerja.

'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
berani
sumber
1

Gunakan bentuk untuk menyorot pilihan.

Catatan: Ini hanya berfungsi ketika beralih ke jendela Excel lain. Sebagai solusinya, Anda dapat membuka jendela Excel kosong dan beralih ke jendela ini sebelum beralih ke aplikasi lain untuk mempertahankan sorotan.

Cukup tambahkan ini ke kode ThisWorkbook Anda (buku kerja Anda, bukan kode sheet Anda). Ini akan bekerja untuk setiap lembar di buku kerja Anda.

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

Anda bahkan dapat memformat bentuk sesuai keinginan Anda dengan mengubah kode.

Keuntungannya adalah:

  • Anda tidak kehilangan format asli saat excel lumpuh karena Anda mengalami kegagalan daya
  • Anda tidak kehilangan format asli saat menggunakan CTRL + [dari buku kerja lain yang mengubah lembar aktif
  • Anda tidak kehilangan sorotan ketika membuat perubahan ke jendela excel lainnya sementara dibandingkan dengan solusi CTRL + C
cyberponk
sumber
0

Di Excel 2003 alamat sel yang saat ini dipilih ditampilkan di kiri atas. Meskipun sel tidak disorot, itu membuat Anda berada di tengah jalan.

Michaelkay
sumber
0

tidak ada solusi permanen untuk masalah ini.

solusi (mungkin mengganggu dalam beberapa saat) adalah mengubah sorotan sel yang dipilih saat mereka dipilih dan memilih kembali lagi untuk menjatuhkan warna.

Tempelkan kode ini dalam kode Sheet1 di belakang dan buka spreadsheet Anda dan pilih beberapa sel, pilih yang lain lalu pilih kembali yang pertama untuk menjatuhkan warnanya

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

sumber
0

Solusi Sederhana yang menempatkan warna sel saat pemilihan berubah

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


Solusi Kompleks yang hanya mengubah warna sel saat fokus hilang

Dalam modul standar:

Option Explicit    
Public s As Range

Dalam lembar yang Anda inginkan berfungsi:

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

Dalam 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


Kutipan: Solusi sederhana didasarkan dari jawaban sebelumnya oleh @Dave ; Solusi kompleks disatukan dari banyak sumber, terutama dengan bantuan @JohnColeman dalam posting ini .

Travis Heeter
sumber