una seleccionar resaltar para marcar marca macro formato fila condicional con completa como columna celda cada activa excel vba highlight

excel - seleccionar - resaltar fila y columna de la celda activa sin macro



¿Hightlight fila/columna activa en Excel sin usar VBA? (7)

Lo que quiero lograr es resaltar una fila o columna activa. Utilicé soluciones de VBA, pero cada vez que se utiliza el evento Selection_change , pierdo la oportunidad de deshacer cualquier cambio en mi hoja de trabajo.

¿Hay alguna manera de resaltar de algún modo la fila / columna activa sin usar VBA?


Antes que nada, gracias! Acababa de crear una solución con resaltar celdas, usar Selection_Change y cambiar el contenido de las celdas. No sabía que deshabilitaría Deshacer. Encontré una manera de hacerlo combinando el formato condicional, Cell () y el evento Selection_Change. Así es como lo hice.

  • En la celda A1 pongo la fórmula = Celda ("fila")
  • La fila 2 está completamente vacía
  • La fila 3 contiene los encabezados
  • La fila 4 y abajo son los datos
  • Para actualizar la fórmula en A1, la hoja debe volver a calcularse. Puedo hacerlo con F9, pero creé el evento Selection_Change con el único código que se ejecutará es Range("A1").Calculate . De esta manera se realiza cada vez que el usuario se mueve, y como Selection_Change NO está cambiando ningún valor / formato, etc. en la hoja, Deshacer no está deshabilitado.
  • Ahora solo ingrese el formato condicional para resaltar las celdas que tienen la misma fila que la celda A1.
    • Seleccione toda la columna B
    • Formato condicional, Administrar reglas, Nueva regla, Usar una fórmula para determinar qué celdas formatear
    • Ingrese esta fórmula: = Fila (B1) = $ A $ 1
    • Haga clic en Formatear y seleccione cómo desea que se resalte
    • Listo. Presione OK en las ventanas emergentes.

Esto funciona para mí


Con el formato condicional, en lugar de resaltar toda la fila y columna, es posible resaltar la fila a la izquierda de la celda y la columna sobre la celda con el siguiente código:

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


En el evento Selección_cambio de hojas, llame a lo siguiente:

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

¡Este es un formato largo para mayor claridad!


Lo mejor que puedes obtener es usar el formato condicional.

Crea dos reglas basadas en fórmulas:

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

Como se muestra en:

El único inconveniente es que cada vez que selecciona una celda necesita volver a calcular su hoja. (Puede presionar "F9")


No creo que se pueda hacer sin usar VBA, pero se puede hacer sin perder su historial de deshacer:

En VBA, agregue lo siguiente a su objeto de hoja de cálculo:

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

Cree un nuevo módulo de VBA y agregue lo siguiente:

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

Finalmente, use el formato condicional para resaltar celdas basadas en la fórmula ''HighlightSelection'':


Puede resaltar temporalmente la fila actual (sin cambiar la selección) presionando Shift+Space . Columna actual con Ctrl+Space .

Parece que funciona en Excel, Hojas de cálculo de Google, OpenOffice Calc y Gnumeric (todos los programas en los que lo probé). (Gracias a https://productforums.google.com/forum/#!topic/docs/gJh1rLU9IRA por señalar esto)

Lamentablemente, no es tan bueno como la fórmula y las soluciones basadas en macro (que funcionó para mí por cierto), porque el resaltado desaparece al mover el cursor, pero tampoco requiere la molestia de configurarlo cada vez, o hacer una plantilla con él (que no pude conseguir para trabajar).

Además, descubrí que puede simplificar la fórmula de formato condicional (para Excel) de las otras soluciones en una sola fórmula para una sola regla como:

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

Intercambia eso, si lo hicieras de esta manera, la columna y la fila resaltadas tendrían que usar el mismo formato, pero eso probablemente sea más que adecuado para la mayoría de los casos, y es menos trabajo. (gracias a https://trumpexcel.com/highlight-active-row-column-excel/ para la fórmula abreviada)


Una alternativa a Range.Calculate es usar ActiveWindow.SmallScroll El único inconveniente es que la pantalla parpadea por una fracción de segundo después de hacer una nueva selección. Mientras se desplaza manualmente, debe asegurarse de que la nueva selección se salga completamente de la pantalla (ventana) para que funcione. Por eso, en el código siguiente, tenemos que desplazarnos lo suficiente para sacar todas las filas visibles de la vista de pantalla y luego volver a la misma posición: para forzar la actualización de la pantalla para el formato condicional.

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

Créditos: Rory Archibald https://www.experts-exchange.com/questions/28275889/When-is-excel-conditional-formatting-refreshed.html