Hola...
En VBA de Excel, hay un metodo bastante eficiente del objeto Range que se llama End, su funcion es llevar el cursor a la celda que este, a partir de la celda activa, en direccion: arriba, abajo, derecha o izquierda y seleccionarla, todo, dentro de la region actual que como saben es la que esta delimitada por una fila o columna en blanco, vi un ejemplo de sustitucion en SB pero era algo largo, el siguiente ejemplo hace lo mismo con menos lineas, espero le sirva a alguien...
'*************************************************************************************************
' MACRO PARA MOVERSE A LOS EXTREMOS DE LA CELDA ACTIVA
'
' Copyright (C) 2005 Mauricio Baeza Servin
' Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos de la
' Licencia Pública General de GNU según es publicada por la Free Software Foundation, bien de la
' versión 2 de dicha Licencia o bien (según su elección) de cualquier versión posterior.
'
' Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso
' sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR.
' Véase la Licencia Pública General de GNU para más detalles.
'
' Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha
' sido así, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU.
'
' Mauricio Baeza - mau74bs@yahoo.com.mx
'
'*************************************************************************************************
Option Explicit
'Solo para pruebas
Public Sub Pruebas()
Call MueveteA("izquierda", False)
End Sub
'Direccion = direccion a la que nos queremos mover, pasado como texto
' arriba
' abajo
' derecha
' izquierda
'Aunque yo preferiria solo pasar un argumento entero 1,2,3 o 4
'El argumento Seleccion es interesante
'False = Solo mueve el cursor en la direccion indicada
'True = Mueve y selecciona a partir de la celda activa y hasta la direccion especificada
Public Sub MueveteA(ByVal Direccion As String, ByVal Seleccion As Boolean)
Dim Document As Object
Dim dispatcher As Object
Dim Datos(1) As New com.sun.star.beans.PropertyValue
Dim sDireccion As String
Set Document = ThisComponent.CurrentController.Frame
Set dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Datos(0).Name = "By"
Datos(0).Value = 1
Datos(1).Name = "Sel"
Datos(1).Value = Seleccion
Select Case Direccion
Case "arriba" : sDireccion = ".uno:GoUpToStartOfData"
Case "derecha" : sDireccion = ".uno:GoRightToEndOfData"
Case "abajo" : sDireccion = ".uno:GoDownToEndOfData"
Case "izquierda": sDireccion = ".uno:GoLeftToStartOfData"
End Select
dispatcher.executeDispatch(document, sDireccion, "", 0, Datos())
End Sub
Saludos
Mauricio
- Añadir nuevo comentario
- 8361 lecturas
Comentarios recientes
hace 5 años 33 semanas
hace 5 años 37 semanas
hace 5 años 37 semanas
hace 5 años 39 semanas
hace 5 años 50 semanas
hace 6 años 9 semanas
hace 6 años 18 semanas
hace 6 años 26 semanas
hace 7 años Un día
hace 7 años Un día