Jak zachować zaznaczenie zaznaczonego tekstu podczas zmiany fokusa w programie Microsoft Word / Excel

49

Powiązane z tym pytaniem: Pokaż zaznaczenie komórki w programie Excel, gdy nie jest ostry, z wyjątkiem tego, że moja sprawa dotyczy Microsoft Word.

Kiedy zaznaczam tekst lub kolumnę / wiersz w programie Microsoft Word lub Excel (2003, 2007, 2010 lub 2013), jest on podświetlony w programie Word w następujący sposób:

wprowadź opis zdjęcia tutaj

i Excel:

wprowadź opis zdjęcia tutaj

Jednak gdy zmieniam fokus na inny program, podświetlony tekst nie jest już podświetlany.

Ogólnie pracuję na 2 monitorach, gdzie jeden monitor zawiera dokument / arkusz kalkulacyjny zawierający dane, które muszę odczytać, a drugi monitor jest tam, gdzie faktycznie pracuję. Wybiorę tekst (lub komórki), aby wyróżniał się na wielu stronach danych, a następnie przełączam programy, ale podświetlony tekst nie jest już widoczny.

Czy istnieje trwałe rozwiązanie tego problemu?

glenneroo
źródło
@CGTheLegend: Oferowane alternatywne rozwiązania kosztują pieniądze lub są tymczasowymi makrami, które AFAIK nie działają w wielu plikach.
glenneroo,

Odpowiedzi:

23

Szybkim sposobem rozwiązania połowy problemu (przy przejściu z Excela na Worda) jest skopiowanie tekstu. Kiedy naciśniesz Ctrl + c, komórki będą nadal zaznaczane (górne zaznaczenie zniknęło, ale nadal masz kropkowaną linię wokół tekstu).

Minusem tego jest to, że tekst jest zaznaczany tylko tak długo, jak długo komórki są kopiowane. Oznacza to, że nie możesz skopiować niczego innego lub oznaczenie zniknęło. Niestety nie będzie to działać z Worda na Excela.

Rubaijat
źródło
14

To wydaje się być wyłączną „funkcją” Microsoft. W przypadku większości projektów potrzebuję tylko dostępu tylko do odczytu, a formatowanie nie ma znaczenia w moim przypadku, dlatego przełączyłem się na OpenOffice, który nie wykazuje takiego zachowania.

glenneroo
źródło
3
Nie sądzę, aby ta odpowiedź była najlepszym rozwiązaniem. Samo użycie innej aplikacji nie jest najlepszym rozwiązaniem dla wszystkich.
CGTheLegend
Podoba mi się to rozwiązanie, ponieważ stwardnienie rozsiane nie usunęło tego błędu od 100 lat
Hartmut P.
Osobiście przekonałem się, że LibreOffice jest bardziej kompatybilny.
Damian Vogel
6

nie ma trwałego rozwiązania tego problemu.

obejściem (może stać się denerwujące) może być zmiana podświetlenia wybranych komórek podczas ich wybierania i ponowne wybranie ich ponownie, aby upuścić kolor.

Przyklej ten kod do kodu Arkusza1 i przejdź do arkusza kalkulacyjnego i wybierz niektóre komórki, wybierz inne, a następnie ponownie wybierz pierwsze, aby upuścić kolor

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

źródło
@DaveRook pomysł zmiany koloru tła w zdarzeniu SelectionChange lub Activate powinien działać zarówno w programie Excel, jak i Word.
6

Ten VBa zrobi to, ale zakłada, że ​​NIE używasz wyróżnienia. Jeśli tak, podświetlanie zostanie pomieszane, więc nie używaj go.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveCell.Worksheet.Cells.Interior.ColorIndex = xlNone
    ActiveCell.EntireRow.Interior.ColorIndex = 19
End Sub

Jak dodać VBA w MS Office?


Jako obszerne obejście (jeśli podświetlenie nie działa dla Ciebie), możesz użyć czegoś takiego jak JRuler (wysłuchaj mnie :) !! ), ponieważ pozwoli to na pozostawienie linijki na ekranie z wierszem nad nią, więc gdy wrócisz do tego ekranu, zobaczysz, gdzie byłeś (więc możesz zobaczyć, straciłem zaznaczenie, ale przynajmniej widzę I patrzył na wiersz 3)!

Nie zrozum mnie źle, jest to pracochłonne i bolesne, jeśli często to robisz, ale może wystarczyć dla dowolnego programu (Word i Excel).

wprowadź opis zdjęcia tutaj

Dave
źródło
4

Po dziesięciu latach tego problemu, który doprowadził mnie również do szału, w końcu znalazłem rozwiązanie, które działa dla mnie. Niestety nie jest darmowy ... Rzeczywisty menedżer okienma funkcję „Ignoruj ​​dezaktywację”, którą można włączyć dla określonych aplikacji. To sprawia, że ​​okno myśli, że nadal jest aktywne, nawet jeśli nie. Mam to włączone dla wszystkich aplikacji biurowych i teraz nadal widzę podświetlony wybór, nawet jeśli inne okno jest aktywne. Nie miałem też żadnych negatywnych skutków ubocznych. Używam również wielu monitorów, a ten program zawiera mnóstwo innych przydatnych narzędzi do pracy z wieloma monitorami, które sprawiły, że było to dla mnie opłacalne. Zainstalowałem wersję próbną, a następnie ją odinstalowałem, oferując mi 30% zniżki. Może być darmowy program, który to robi, ale nie mogłem go znaleźć ... Mam nadzieję, że to pomoże komuś tak bardzo, jak pomogło mi!

bskip
źródło
Niestety ta metoda nie działa w programie Word 2010 i Windows 7
Eugene Mala
2

Długo walczyłem z tym samym problemem. Ja też gubię się w gęstych plikach Excela, gdy używam wielu ekranów.

W Internecie dostępna jest ogromna kolekcja wtyczek Excel. Dowiedziałem się, że rozszerzenie Kutools Excel (darmowa wersja) ma skrzyżowane krzywe zaznaczania jednym kliknięciem, które pozostają widoczne, nawet jeśli Excel jest nieostry. Kutools również wydaje się mieć wiele dodatkowych funkcji, ale z pewnością nie jest to jedyna dostępna opcja.

Oto zrzut ekranu przedstawiający skrzyżowane włosy Kutools w akcji:

Zrzut ekranu z Kutools pokazuje skrzyżowane włosy w akcji

Wiem, że niektórzy ludzie boją się wtyczek lub narzędzi innych firm, ale korzystanie z nich jest prawdopodobnie najszybszą i najłatwiejszą opcją.

hupiukko
źródło
0

Wstaw pole tekstowe, które rozciąga się na długość komórek. Wpisz wiersz ******* podobnych znaków, aby wypełnić pole tekstowe. Możesz przenieść pole tekstowe w dół strony, tak jak linijkę lub kawałek papieru na papierowej kopii. Usuń po zakończeniu.

BAS
źródło
0

Proste rozwiązanie, które umieszcza kolor komórki po zmianie zaznaczenia

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


Złożone rozwiązanie, które zmienia kolor komórki tylko w przypadku utraty ostrości

W standardowym module:

Option Explicit    
Public s As Range

W arkuszach chcesz pracować:

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

W 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


Cytaty: Proste rozwiązanie opiera się o odpowiedź przez @Dave ; Złożone rozwiązanie zostało zebrane z wielu źródeł, zwłaszcza przy pomocy @JohnColeman w tym poście .

Travis Heeter
źródło
0

Bardzo prostym sposobem na to jest formatowanie warunkowe i VBA.

Po prostu dodaj to do kodu ThisWorkbook:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Application.CutCopyMode = False Then
        Application.Calculate
    End If
End Sub

i uruchom następujący kod tylko raz , aby utworzyć reguły formatu warunkowego:

Sub CreateConditionalFormats()
  Dim y As FormatCondition
    For Each ws In ThisWorkbook.Worksheets
        DoEvents

        'Optionally delete any existing conditional formats
        'ws.Cells.FormatConditions.Delete

        ' Selection highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ROW()=CELL(""row""), COLUMN()=CELL(""col""))")
        With y.Borders(xlTop)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlBottom)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlLeft)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlRight)
            .LineStyle = xlSolid
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False
        y.SetFirstPriority

        ' Row highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")")
        With y.Borders(xlTop)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlBottom)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False

        ' Column highlight
        Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=COLUMN()=CELL(""col"")")
        With y.Borders(xlLeft)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With y.Borders(xlRight)
            .LineStyle = xlDash
            .Color = -16776961
            .TintAndShade = 0
            .Weight = xlThin
        End With
        y.StopIfTrue = False
    Next
End Sub
cyberponk
źródło
0

Korzystanie z wstawiania kształtu / prostokąta jest prostym obejściem. Wybierz opcję „Bez wypełnienia” i możesz nawet edytować komórki za jej pośrednictwem.

Spójrz na zdjęcie tutaj:

Spójrz na zdjęcie tutaj

IvanStanic
źródło