Urge: Se mueve Posicion de botones

20/12/2004 - 13:52 por gema.bernardo | Informe spam
Hola,

En una hoja excel estoy añadiendo botones en varias celdas. El problema es
que algunos botones no se ubican dentro de la celda que le indico.

Todas estas celdas tienen un ancho de columna de 10 y un ancho de fila de
20.

Y los botones van a tener todos un Ancho = 19.5 y un Alto = 7.5.

Ejemplo añadir boton en celda G17:

Izquierda = .Range("G17").Left
Arriba = .Range(Ubicacion).Top
Ancho = 19.5
Alto = 7.5

Set bt = Sheets(1).Buttons.Add(Izquierda, Arriba, Ancho, Alto)
Sheets(1).Shapes(bt.name).IncrementLeft 10
Sheets(1).Shapes(bt.name).IncrementTop 10
bt.Placement = xlMoveAndSize

Esto va bien, hasta las celdas de una columna (en concreto, la columna CQ)
en la cual el boton añadido ya está desplazado más hacia la derecha y no
haria falta ejecutar:
Sheets(1).Shapes(bt.name).IncrementLeft 10
Sheets(1).Shapes(bt.name).IncrementTop 10

¿Como puedo hacer para que en cada una de las celdas se añada un boton
centrado en la celda, con las dimensiones de ancho y alto indicadas antes?

Nota: si en vez de ese ancho, se aplica:
Ancho = .Range(Ubicacion).Width
Alto = .Range(Ubicacion).Height
Tambien se desplazan hacia la derecha ¿pq ocurre esto???


Un saludo, Gema.
 

Leer las respuestas

#1 Héctor Miguel
21/12/2004 - 05:40 | Informe spam
hola, Gema !

... estoy añadiendo botones en varias celdas ... problema ... algunos botones no se ubican dentro de la celda que le indico.
... estas celdas tienen un ancho de columna de 10 y un ancho de fila de 20.
... los botones van a tener todos un Ancho = 19.5 y un Alto = 7.5. [...]
Izquierda = .Range("G17").Left
Arriba = .Range(Ubicacion).Top
Ancho = 19.5
Alto = 7.5 [...]
¿... hacer ... que ... se añada un boton centrado en la celda, con las dimensiones de ancho y alto indicadas antes? [...]



toma nota de lo siguiente con respecto de las propiedades 'de medidas' de los objetos...
-> Width, Height y RowHeight se refieren a una medida en puntos [1/72 de pulgada... 72 pixeles por pulgada]
-> ColumnWidth se refiere al ancho de la columna PERO... basado en el ancho de la fuente 'normal... en uso'
[poca relacion existe -por no decir que ninguna- entre las 'medidas' de una columna 'Width' y 'ColumnWidth']
-> si para las propiedades de ancho y alto ->del boton<- usas 'las mismas' [Width y Height] ->del 'rango'<- [p.e. 'G17']
Y las 'distancias' [Izquierda=Left y Arriba=Top] son las mismas del rango [aqui 'hablamos' de puntos de documento]
las medidas [y ubicacion] del boton seran ->las mismas<- que el rango [el cual sera 'cubierto' por el objeto]
-> si lo que 'buscas' es que el boton quede ->dentro<- de la celda SIN CUBRIRLA [totalmente]...
1° 'aumenta' unos puntos a las propiedades 'Izquierda/Left' Y 'Arriba/Top' ->del rango<- [donde se ubicara el boton]
2° 'disminuye/resta' EL DOBLE de dichos puntos a las propiedades 'Ancho/Width' Y 'Alto/Height' [del mismo rango]
[p.e. si deseas que el boton 'mantenga' una distancia de los bordes de la celda digamos de 2 PUNTOS]...
With .Range(Ubicacion)
Izquierda = .Left + 2
Arriba = .Top + 2
Ancho = .Wdth - 4
Alto = .Height - 4
End With

saludos,
hector.

Preguntas similares