Página 1 de 1

[RESUELTO] resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 12:38 am
por afp_sch
Hola a todos,

Mi objetivo es lograr que al colocarme sobre una celda (cualquiera) el documento resalte tanto la fila como la columna, es decir, formen una cruz cuyo centro es la celda seleccionada.

En excel encontré varios códigos pero este que anexo es el mas sencillo:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Cells.Interior.ColorIndex = xlNone
Target.EntireRow.Interior.ColorIndex = 38
Target.EntireColumn.Interior.ColorIndex = 38
End Sub



Pero este código causa algunos errores en excel asi que proponen este:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim MiRango As Range
Application.ScreenUpdating = False

With Application.Cells
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
Set MiRango = Application.Union(Range(Cells(Target.Row, 1), Target), _
Range(Cells(1, Target.Column), Target))

With MiRango.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 7
End With
With MiRango.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 7
End With
With MiRango.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 7
End With
With MiRango.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 7
End With

Application.ScreenUpdating = True
Set MiRango = Nothing
End Sub



Hay otras paginas pero todo es para excel y necesito para openoffice

De antemano mil gracias por tu ayuda.
Saludos

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 1:04 am
por mauricio
Hola...

El siguiente código, asignado al evento "Al cambiar seleccion" de la hoja donde quieres esto hace el trabajo, el estilo de celda "Resaltado" tienes que tenerlo creado a tu gusto.
Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit

Sub ResaltarSeleccion()
Dim oDoc As Object
Dim oControlador As Object
Dim oSel As Object
Dim oRango As Object
Dim oRango1 As Object
Dim oRango2 As Object

   oDoc = ThisComponent
   oControlador = oDoc.CurrentController
   oSel = oControlador.Selection
   If oSel.ImplementationName = "ScCellObj" Then
      oRango = oControlador.getVisibleRange
      oRango1 = oSel.SpreadSheet.getCellRangeByPosition( oSel.CellAddress.Column, oRango.StartRow, oSel.CellAddress.Column, oRango.EndRow+1 )
      oRango2 = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oSel.CellAddress.Row, oRango.EndColumn+1, oSel.CellAddress.Row )
      oRango = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oRango.StartRow, oRango.EndColumn+1, oRango.EndRow+1 )
      oRango.CellStyle = "Default"
      oRango1.CellStyle = "Resaltado"
      oRango2.CellStyle = "Resaltado"
   End If

End Sub

Solo te funcionara si la versión de OOo/LibO que uses ya implementa los eventos de hoja:
captura_004.png

Si tu versión aun no lo hace, aun puedes hacerlo con un poco más de código, pero creo que es tan sencillo actualizar que no vale la pena verlo, si funciona muy bien con este evento.
captura_003.png

NOTA: El código usado tiene una ligera "deficiencia" que hay que subsanar... ¿que deficiencia es esta?

Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], adicionalmente puedes marcar el icono de la tilde verde, de esta forma conseguiremos un foro más ordenado.

Saludos

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 4:35 am
por afp_sch
Hola Mauricio,

Gracias por la respuesta tan rapida.

Te comento que no me sale "eventos de la hoja" y no se donde encontrar "accion asignada" ni "al cambiar selección"

En fin, no he podido usar el código que publicaste.

Que debo hacer??

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 4:52 am
por mauricio
Si te es posible descarga la ultima version: http://www.libreoffice.org/download con este podrás probarlo.

Saludos

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 6:51 am
por afp_sch
Hola,

instalé el 3.3.2 pra probar pero no funciona....

..estoy bajando el 3.3.3 y probaré

Mil gracias

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 7:20 am
por afp_sch
Hola mauricio,

Nada no funciona.

Al seleccionar la celda sale una ruedita dando vuelta por unos segundos pero no pasa nada..

..tendra algo que ver con "el estilo de celda "Resaltado" tienes que tenerlo creado a tu gusto." esto a que se refiere??
o sera que debo darle el color en "Resaltado" y si es asi como lo hago??
oRango1.CellStyle = "Resaltado"
oRango2.CellStyle = "Resaltado"


Lo que necesito es que se vea como la segunda captura

Gracias!!

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 2:59 pm
por mauricio
Hola...

Los paso que tienes que hacer son:

1.- Copiar la macro "dentro" del archivo de pruebas
2.- Crear un estillo de celda que se llame Resaltado con el color de fondo que quieras, esto lo resuelves facilmente en la ayuda del programa.
3.- Asignar la macro al avento Al cambiar seleccion

Mejor, solo descarga el archivo anexo.

Eso es todo.

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 3:49 pm
por fornelasa
Hola...
Bueno si, ya sabemos, siempre hay un agua fiestas, si es que se puede responder, solo por curiosidad, estimado afp_sch ¿eso que utilidad tiene en la practica?, digo.. muy bonito todo, bien, buenos codigos pero....... ¿sera practico eso en el trabajo diario?

Saludos.

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 4:23 pm
por mauricio
Mi estimado FORNELASA, en todos mis años de dar soporte en diferentes foros, me he acostumbrado a todo tipo de peticiones "extrañas" por decir lo menos, casi siempre he llegado a la conclusión de que -todos tenemos diferentes necesidades y lo más importante, diferentes enfoques de su posible satisfacción-...

Un abrazo

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 4:45 pm
por fornelasa
Hola, igualmente, ¡un abrazo Mauricio!..... desde la hermana republica de Edo. Mex. (Si..... muy cerquita de )

Saludos, Federico.

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 5:07 pm
por mauricio
Mira que es chiquito el mundo. Hace años vivi en Tultitlan (Real del bosque), y ahora estoy dando un curso los sábados, ahí cerquita en Cd. Labor. Tenemos que organizar algo un día de estos.

Otro abrazo.

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 5:12 pm
por fornelasa
Hola, si, jajajajajajaja, vaya que es chiquito el mundo, yo vivo en , si, a ver que dia vamos a comer y platicamos.

Saludos, Federico.

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 8:02 pm
por afp_sch
Hola FORNELASA,

¿eso que utilidad tiene en la practica?

Primero que todo un saludo y gracias por interesarte en el tema.
Esto de ubicarme en una celda y que se resaltara la columna y la fila se me ocurrió porque tengo un formato de nomina bastante extenso
y al liquidar los tiempos debo colocarlos en una casilla o celda que me queda lejos de los horarios
por lo que se me cansa la vista, además, toca revisar por si hay algún error ya que existe la duda de si me salte o no de fila.

Es algo muy personal pero le podría servir a alguien que maneje formatos extensos.

Saludos!

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 8:34 pm
por afp_sch
Mauricio,

Mil gracias por tu ayuda.
Lo único que no entiendo es que me toca mandar la hoja que publicaste a mi documento para que pueda funcionar, al crear nuevo macro y pegar el codigo no me funciona.

Pero bueno lo importante es que voy a ser mas eficiente con este macro, además, mi vista va a esta menos forzada.

De nuevo mil gracias!!

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Vie Jun 24, 2011 9:49 pm
por fornelasa
Hola afp_sch , ok bien, gracias por la aclaración, y si, ya veo su buen uso.

Saludos, Federico.

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Sab Jun 25, 2011 4:06 am
por afp_sch
Fresco!

Gracias por tu atención

Saludos!

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Mié Nov 30, 2016 8:45 pm
por rarcos1980
Hola buen dia, agradezco las aportaciones que hacen aquí y la verdad uno que viene de excel nos ayuda mucho, ya que queremos que funcione de la misma manera, pero cada programa tiene lo suyo, eh leido sobre esta macro y la encuentro muy interesante, solo que me gustaría que marcara solo la fila, pero no la columna, espero me puedan apoyar en esto...muchas gracias.


***Listo verifique el codigo y solo comente unas lineas...

Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****
Option Explicit

Sub ResaltarSeleccion()
Dim oDoc As Object
Dim oControlador As Object
Dim oSel As Object
Dim oRango As Object
REM Dim oRango1 As Object
Dim oRango2 As Object

   oDoc = ThisComponent
   oControlador = oDoc.CurrentController
   oSel = oControlador.Selection
   If oSel.ImplementationName = "ScCellObj" Then
      oRango = oControlador.getVisibleRange
      REM oRango1 = oSel.SpreadSheet.getCellRangeByPosition( oSel.CellAddress.Column, oRango.StartRow, oSel.CellAddress.Column, oRango.EndRow+1 )
      oRango2 = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oSel.CellAddress.Row, oRango.EndColumn+1, oSel.CellAddress.Row )
      oRango = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oRango.StartRow, oRango.EndColumn+1, oRango.EndRow+1 )
      oRango.CellStyle = "Default"
      REM oRango1.CellStyle = "Resaltado"
      oRango2.CellStyle = "Resaltado"
   End If

End Sub


Muchas gracias!!

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Mié Nov 30, 2016 9:26 pm
por mauricio
Muy sencillo...
Código: Seleccionar todo   Expandir vistaContraer vista
Sub ResaltarSeleccion()
Dim oDoc As Object
Dim oControlador As Object
Dim oSel As Object
Dim oRango As Object
Dim oRango1 As Object
Dim oRango2 As Object

   oDoc = ThisComponent
   oControlador = oDoc.CurrentController
   oSel = oControlador.Selection
   If oSel.ImplementationName = "ScCellObj" Then
      oRango = oControlador.getVisibleRange
      'oRango1 = oSel.SpreadSheet.getCellRangeByPosition( oSel.CellAddress.Column, oRango.StartRow, oSel.CellAddress.Column, oRango.EndRow+1 )
      oRango2 = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oSel.CellAddress.Row, oRango.EndColumn+1, oSel.CellAddress.Row )
      'oRango = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oRango.StartRow, oRango.EndColumn+2, oRango.EndRow+2 )
      oRango = oSel.SpreadSheet.createCursor()
      oRango.CellStyle = "Default"
      'oRango1.CellStyle = "Resaltado"
      oRango2.CellStyle = "Resaltado"
   End If

End Sub

Saludos

Re: resaltar filas y columnas al seleccionar celda

NotaPublicado: Mié Nov 30, 2016 9:58 pm
por rarcos1980
mauricio escribió:Muy sencillo...
Código: Seleccionar todo   Expandir vistaContraer vista
Sub ResaltarSeleccion()
Dim oDoc As Object
Dim oControlador As Object
Dim oSel As Object
Dim oRango As Object
Dim oRango1 As Object
Dim oRango2 As Object

   oDoc = ThisComponent
   oControlador = oDoc.CurrentController
   oSel = oControlador.Selection
   If oSel.ImplementationName = "ScCellObj" Then
      oRango = oControlador.getVisibleRange
      'oRango1 = oSel.SpreadSheet.getCellRangeByPosition( oSel.CellAddress.Column, oRango.StartRow, oSel.CellAddress.Column, oRango.EndRow+1 )
      oRango2 = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oSel.CellAddress.Row, oRango.EndColumn+1, oSel.CellAddress.Row )
      'oRango = oSel.SpreadSheet.getCellRangeByPosition( oRango.StartColumn, oRango.StartRow, oRango.EndColumn+2, oRango.EndRow+2 )
      oRango = oSel.SpreadSheet.createCursor()
      oRango.CellStyle = "Default"
      'oRango1.CellStyle = "Resaltado"
      oRango2.CellStyle = "Resaltado"
   End If

End Sub

Saludos


Muchas Gracias tambien lo resolvi viendo y analizando el codigo muchas gracias brother...