[RESUELTO] resaltar filas y columnas al seleccionar celda

Discute sobre la aplicación de hojas de cálculo
Responder
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

[RESUELTO] resaltar filas y columnas al seleccionar celda

Mensaje 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
Última edición por mauricio el Mié Nov 30, 2016 9:27 pm, editado 1 vez en total.
Razón: Marcar resuelto correctamente
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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

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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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??
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: resaltar filas y columnas al seleccionar celda

Mensaje por mauricio »

Si te es posible descarga la ultima version: http://www.libreoffice.org/download con este podrás probarlo.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

Re: resaltar filas y columnas al seleccionar celda

Mensaje por afp_sch »

Hola,

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

..estoy bajando el 3.3.3 y probaré

Mil gracias
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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!!
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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.
Adjuntos
Resaltar seleccion.ods
(8.69 KiB) Descargado 987 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: resaltar filas y columnas al seleccionar celda

Mensaje por fornelasa »

Hola, igualmente, ¡un abrazo Mauricio!..... desde la hermana republica de Edo. Mex. (Si..... muy cerquita de )

Saludos, Federico.
Última edición por fornelasa el Sab Feb 09, 2013 11:05 pm, editado 1 vez en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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.
Última edición por fornelasa el Sab Feb 09, 2013 11:04 pm, editado 1 vez en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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!
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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!!
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: resaltar filas y columnas al seleccionar celda

Mensaje por fornelasa »

Hola afp_sch , ok bien, gracias por la aclaración, y si, ya veo su buen uso.

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
afp_sch
Mensajes: 20
Registrado: Lun Ene 19, 2009 8:48 am

Re: resaltar filas y columnas al seleccionar celda

Mensaje por afp_sch »

Fresco!

Gracias por tu atención

Saludos!
rarcos1980
Mensajes: 9
Registrado: Vie Jul 22, 2016 4:06 pm

Re: resaltar filas y columnas al seleccionar celda

Mensaje 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

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!!
Libre office Version: 6.2.8 Windows 10 64bits
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: resaltar filas y columnas al seleccionar celda

Mensaje por mauricio »

Muy sencillo...

Código: Seleccionar todo

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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
rarcos1980
Mensajes: 9
Registrado: Vie Jul 22, 2016 4:06 pm

Re: resaltar filas y columnas al seleccionar celda

Mensaje por rarcos1980 »

mauricio escribió:Muy sencillo...

Código: Seleccionar todo

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...
Libre office Version: 6.2.8 Windows 10 64bits
Responder