Crear Botones CENTRADOS en celdas

21/09/2004 - 15:57 por gema.bernardo | Informe spam
Hola,

En mi aplicacion creo botones dinamicamente con el siguiente codigo:


Izquierda = .Range(Ubicacion).Left + 10
Arriba = .Range(Ubicacion).Top - 8
Ancho = .Range(Ubicacion).Width - 30
Alto = .Range(Ubicacion).Height - 10

Set bt = Sheets(1).Buttons.Add(Izquierda, Arriba, Ancho, Alto)


donde Ubicacion es un rango ejemplo: "A3".
-

El problema es que dependiendo del zoom de la hoja y ancho de las filas,
tengo que aplicarle desplazamientos arbitrarios para que el boton se
ajuste a la celda indicada en Ubicacion.

Alguien sabria decirme alguna forma de crear un boton centrado en una
celda excel, pudiendo haber celdas con diferentes anchos y altos???


Un saludo y muchas gracias!

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/09/2004 - 19:13 | Informe spam
hola, Gema !

... creo botones dinamicamente con el siguiente codigo [...] dependiendo del zoom de la hoja
... tengo que aplicarle desplazamientos arbitrarios para que el boton se ajuste a la celda indicada [...]
... crear un boton centrado en una celda ... celdas con diferentes anchos y altos???



[hasta donde se] el zoom de una hoja [que en realidad es una propiedad de un objeto 'window']
'afecta' las dimensiones y la posicion de los objetos de la hoja [como 'se ven' y 'donde caen' en pantalla]
-> la propiedad zoom es 'aplicable' ->solamente<- a la ventana 'activa' [la hoja que esta 'en pantalla']
-> la 'ubicacion' de los objetos de la hoja, se 'mide' en ->puntos de documento<-
-> existe tambien la posibilidad de una 'distorsion' [diferente en cada pc] por el 'driver' de la tarjeta de video
-> seria necesario recurrir a las API's para obtener/modificar estas [y otras] variantes

la 'solucion' que te propongo al final [con ligeras modificaciones a la anterior], se basa en
-> activar la hoja donde se incrustaran los botones [para estar en condiciones de...]
-> 'detectar' el zoom 'actual'... establecerlo en un zoom de 100%
-> incrustrar el/los boton/es de comando [y 'devolverle' el zoom 'original' a ->la ventana<-]
-> opcionalmente, activar de nuevo la hoja 'inicial [en el caso de que NO era la 'activa']

si cualquier duda... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Private Sub AgregarBoton( _
ByVal Hoja As Worksheet, _
ByVal Ubicacion As String, _
ByVal Título As String, _
ByVal Macro As String)
Dim Izquierda As Single, Arriba As Single, Ancho As Single, Alto As Single, _
Regresar As Boolean, HojaInicial As String, ZoomOriginal As Integer
Application.ScreenUpdating = False
If Hoja.Name <> ActiveSheet.Name Then
HojaInicial = ActiveSheet.Name
Regresar = True
Hoja.Activate
End If
With ActiveWindow
ZoomOriginal = .Zoom
.Zoom = 100
End With
With Hoja
With .Range(Ubicacion)
Izquierda = .Left
Arriba = .Top
Ancho = .Width
Alto = .Height
End With
With .Buttons.Add(Izquierda, Arriba, Ancho, Alto)
.Caption = Título
.OnAction = Macro
End With
End With
ActiveWindow.Zoom = ZoomOriginal
If Regresar Then Sheets(HojaInicial).Activate
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida