Ayuda para realizar macro que haga shapes

Necesito hacer un formulario donde habrán combobox, uno sera para color de relleno, color de línea y el otro sera para figura en todos ellos la lista sera de unas 5 opciones, se pondrá en un textbox la ubicación en por y en y y al apretar el botón agregar, se dibujara la figura con el color de línea, relleno deseados.

Tengo lo siguiente:

Sub agregaforma(posx As Integer, posy As Integer, base As Integer, altura As Integer)

Sheets("Grafico").Select
ActiveSheet.Shapes.AddShape(msoShapeRectangle, posx, posy, base, altura).Select

End Sub

Por tanto no se como hacer que el combobox defina la figura que en este caso es un rectángulo, además cambiar el fondo y el color de línea

1 Respuesta

Respuesta
1

Puedes dar el color interior y de línea con estas propiedades, te doy dos ejemplos:

Sub agregaforma(posx As Integer, posy As Integer, base As Integer, altura As Integer)
Sheets("Grafico").Select
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, posx, posy, base, altura)
.Fill.ForeColor.RGB = vbRed
.Line.ForeColor.RGB = vbGreen
End With
With ActiveSheet.Shapes.AddShape(msoShapeOval, posx, posy + 100, base, altura)
.Fill.ForeColor.RGB = vbBlack
.Line.ForeColor.RGB = vbYellow
End With
End Sub
Sub agregar()
Call agregaforma(10, 10, 200, 50)
End Sub

La macro agregar es la puedes ejecutar facilmente para probar la de de agregarforma.

Respecto a las formas que puedes usar aquí tienes el extenso listado de todas ellas:

·

http://msdn.microsoft.com/es-es/library/office/ff862770%28v=office.15%29.aspx

·

Por problemas técnicos de esta página a lo mejor no puedes pinchar y debes copiar la dirección en tu navegador.

Sub agregaforma(posx As Integer, posy As Integer, base As Integer, altura As Integer, forma(rectangle))
Sheets("Grafico").Select
With ActiveSheet.Shapes.AddShape(msoShapeforma, posx, posy, base, altura)


Gracias sobre todo por la lista, mi problema es que necesito que sea algo así, entonces cuando llamo al programa yo digo que forma quiero y cuando dibuja que lo lea, hasta ahorita solo obtengo error.

Vamos a poner primero el tipo de Shape para llevar el mismo orden que tiene en el método AddShape.

Como antes pongo una macro sin parámetros que se emplea para probar que llama a la función que hace el dibujo.

Sub agregar()
Dim TipoShape As MsoShapeType
TipoShape = msoShapeRectangle
Call AgregaForma(TipoShape, 10, 10, 200, 50)
End Sub
Sub AgregaForma(TipoShape As MsoShapeType, posx As Integer, posy As Integer, base As Integer, altura As Integer)
Sheets("Grafico").Select
With ActiveSheet.Shapes.AddShape(TipoShape, posx, posy, base, altura)
.Fill.ForeColor.RGB = vbRed
.Line.ForeColor.RGB = vbGreen
End With
End Sub

En la macro Agregar puedes poner el tipo de shape que quieras a la variable TipoShape, o incluso poner directamente el tipo en la llamada a AgregarForma.

Y eso es todo.

Esa respuesta es lo máximo, justo lo que necesito muchas gracias

Me alegro que te haya servido y gracias por tus palabras. Lo que debes hacer es valorar la respuesta para que me sirva a mí el trabajo. Fíjate que se puede vatorar Excelente por si aun no has puntuado desde que cambiaron el sistema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas