wake-up-neo.net

Aktive Zeile/Spalte in Excel hervorheben, ohne VBA zu verwenden?

Was ich erreichen möchte, ist die aktive Zeile oder Spalte hervorzuheben. Ich habe VBA-Lösungen verwendet, aber bei jedem Selection_change-Ereignis verliere ich die Möglichkeit, Änderungen in meinem Arbeitsblatt rückgängig zu machen. 

Gibt es eine Möglichkeit, die aktive Zeile/Spalte irgendwie hervorzuheben, ohne VBA zu verwenden?

24
lowak

Ich denke nicht, dass dies ohne VBA möglich ist, aber can kann ohne Rückgängig-Historie erledigt werden

Fügen Sie Ihrem Arbeitsblattobjekt in VBA Folgendes hinzu:

Public SelectedRow as Integer
Public SelectedCol as Integer

Private Sub Worksheet_SelectionChange(ByVal Target as Range)
    SelectedRow = Target.Row
    SelectedCol = Target.Column
    Application.CalculateFull ''// this forces all formulas to update
End Sub

Erstellen Sie ein neues VBA-Modul und fügen Sie Folgendes hinzu:

Public function HighlightSelection(ByVal Target as Range) as Boolean
    HighlightSelection = (Target.Row = Sheet1.SelectedRow) Or _
        (Target.Column = Sheet1.SelectedCol)
End Function

Verwenden Sie schließlich die bedingte Formatierung, um Zellen basierend auf der Formel 'HighlightSelection' hervorzuheben:

screen capture of conditional formatting rules

15
e.James

Das Beste, was Sie bekommen können, ist die Verwendung der bedingten Formatierung.

Erstellen Sie zwei formelbasierte Regeln:

  1. =ROW()=CELL("row")
  2. =COLUMN()=CELL("col")

Wie gezeigt in:

enter image description here

Der einzige Nachteil ist, dass Sie jedes Mal, wenn Sie eine Zelle auswählen, Ihr Blatt neu berechnen müssen. (Sie können "F9" drücken)

29
hstay

Sie können die aktuelle Zeile vorübergehend markieren (ohne die Auswahl zu ändern), indem Sie Shift+Space Drücken. Aktuelle Spalte mit Ctrl+Space.

Scheint in Excel, Google Sheets, OpenOffice Calc und Gnumeric zu funktionieren (alle Programme, in denen ich es ausprobiert habe). (Vielen Dank an https://productforums.google.com/forum/#!topic/docs/gJh1rLU9IRA für diesen Hinweis.)

Leider nicht so gut wie die formelbasierten und makrobasierten Lösungen (die bei mir übrigens auch funktionierten), da die Hervorhebung beim Bewegen des Cursors verschwindet, aber es ist auch nicht mühsam, sie jedes Mal einzurichten oder eine zu erstellen Vorlage damit (was ich nicht zur Arbeit bekommen konnte).

Außerdem habe ich festgestellt, dass Sie die bedingte Formatierungsformel (für Excel) aus den anderen Lösungen in eine einzige Formel für eine einzige Regel wie folgt vereinfachen können:

=OR(CELL("col")=COLUMN(),CELL("row")=ROW())

Wenn Sie dies auf diese Weise tun, müssen die hervorgehobene Spalte und Zeile dieselbe Formatierung verwenden. Dies ist jedoch in den meisten Fällen mehr als ausreichend und erfordert weniger Arbeit. (Danke an https://trumpexcel.com/highlight-active-row-column-Excel/ für die Kurzformel)

12

Erstmal Danke! Ich hatte gerade eine Lösung mit Hervorheben von Zellen erstellt, mit Selection_Change und dem Ändern eines Zelleninhalts. Ich wusste nicht, dass es Rückgängig machen würde. Ich habe einen Weg gefunden, dies zu tun, indem ich bedingte Formatierungen, Cell () und das Selection_Change -Ereignis kombiniere. So habe ich es gemacht. 

  • In Zelle A1 stelle ich die Formel = Zelle ("Reihe")
  • Zeile 2 ist komplett leer
  • Zeile 3 enthält die Header
  • Zeile 4 und unten sind die Daten
  • Damit die Formel in A1 aktualisiert werden kann, muss das Blatt neu berechnet werden. Ich kann das mit F9 tun, aber ich habe das Selection_Change -Ereignis erstellt mit dem einzigen auszuführenden Code istRange("A1").Calculate. Auf diese Weise wird es jedes Mal ausgeführt, wenn sich der Benutzer bewegt, und da Selection_Change KEINE Werte/Formate usw. im Arbeitsblatt ändert, ist Undo nicht deaktiviert. 
  • Geben Sie nun einfach die bedingte Formatierung ein, um die Zellen hervorzuheben, die dieselbe Zeile wie die Zelle A1 ..__ haben.
    • Wählen Sie die gesamte Spalte B aus
    • Bedingte Formatierung, Regeln verwalten, Neue Regel, Verwenden Sie eine Formel, um die zu formatierenden Zellen zu bestimmen
    • Geben Sie diese Formel ein: = Zeile (B1) = $ A $ 1
    • Klicken Sie auf "Formatieren" und wählen Sie aus, wie es markiert werden soll
    • Bereit. Klicken Sie in den Popups auf OK.

Das funktioniert für mich.

6
Nybbe

Eine Alternative zu Range.Calculate ist die Verwendung von ActiveWindow.SmallScroll Der einzige Nachteil ist, dass der Bildschirm nach einer neuen Auswahl für einen Sekundenbruchteil flimmert. Wenn Sie manuell scrollen, müssen Sie sicherstellen, dass die neue Auswahl aus dem Bildschirm (Fenster) verschoben wird ) vollständig, damit es funktioniert. Aus diesem Grund müssen Sie im folgenden Code so weit scrollen, dass alle sichtbaren Zeilen aus der Bildschirmansicht entfernt werden, und dann zurück an dieselbe Position scrollen, um eine Bildschirmaktualisierung für die bedingte Formatierung zu erzwingen.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ScreenUpdating = False
ActiveWindow.SmallScroll Down:=150 'change these values to total rows displayed on screen
ActiveWindow.SmallScroll Down:=-150 'change these values to total rows displayed on screen
'DoEvents 'unable to use this to remove the screen flicker
ScreenUpdating = True
End Sub

Credits: Rory Archibald https://www.experts-exchange.com/questions/28275889/When-is-Excel-conditional-formatting-refreshed.html

2
Aato

Rufen Sie auf dem Sheet Selection_change-Ereignis Folgendes auf:

Function highlight_Row(rngTarget As Range)
    Dim strRangeRow As String
    strRangeRow = rngTarget.Row
    strRangeRow = strRangeRow & ":" & strRangeRow
    Rows(strRangeRow).Select
    rngTarget.Activate
End Function

Dies ist ein langes Format für Klarheit!

0
Colin Nunn

Bei der bedingten Formatierung kann nicht die gesamte Zeile und Spalte hervorgehoben werden, sondern es ist möglich, die Zeile links von der Zelle und die Spalte über der Zelle mit dem folgenden Code hervorzuheben:

=OR(AND(CELL("col")=COLUMN();(CELL("row")-1)>=ROW());AND(CELL("col")>=COLUMN();(CELL("row")-1)=ROW()))
0
Felipe Ribeiro