Jump to content

[CERRADO] Cambiar tamaño y posicion de Conector recto de flecha con codigo


Recommended Posts

Hola amigos; coloqué en una hoja varias flechas; ahora lo no se como hacer con codigo para que cambien de posicion y de tamaño segun lo que yo elija en una lista.

With ActiveSheet.Shapes("171 Conector recto de flecha")

????????

End With

saludos

juandi

Link to post
Share on other sites

pues debes hacer uso de la propiedades del objeto :)

mira en la ayuda:Método BeginConnect para ir "iniciando",luego ve complementando segun te guie la misma ayuda o tus dudas.,

procra 'probar' las macros de ejemplo como esta,que esta en al ayuda:

Sub crea_y_conecta()
Set myDocument = Worksheets(2)
Set s = myDocument.Shapes
Set firstRect = s.AddShape(msoShapeRectangle, 100, 50, 200, 100)
Set secondRect = s.AddShape(msoShapeRectangle, 300, 300, 200, 100)
Set c = s.AddConnector(msoConnectorCurve, 0, 0, 100, 100)
With c.ConnectorFormat
.BeginConnect ConnectedShape:=firstRect, ConnectionSite:=1
.EndConnect ConnectedShape:=secondRect, ConnectionSite:=1
c.RerouteConnections
End With
End Sub[/CODE]

luego procura ir adaptando a tus necesidades:

por ejemplo personalizando variables al castellano,valores de constantes y uno que otro toque personal como mensaje de aviso al final:

[CODE]Sub crea_y_conecta_by_ST()
Lugar = InputBox("Escriba el nombre de la hoja", "Figuras y conectores", "Hoja1")
Set Lahoja = Sheets(Lugar) 'Worksheets(2)
Set s = Lahoja.Shapes
Set fig1 = s.AddShape(msoShapeRectangle, 50, 25, 100, 50)
Set fig2 = s.AddShape(msoShapeRectangle, 150, 150, 100, 50)
Set c = s.AddConnector(msoConnectorCurve, 0, 0, 50, 50)
With c.ConnectorFormat
.BeginConnect ConnectedShape:=fig1, ConnectionSite:=1
.EndConnect ConnectedShape:=fig2, ConnectionSite:=1
c.RerouteConnections
End With
MsgBox "conexion realizada", , "Aviso para " & Application.UserName
End Sub[/CODE]

el mismo ejemplo pero personalizado :)

Link to post
Share on other sites

hola juandi:

siguiendo tu ejemplo que comentas en el 'privado'..te comento que todo esta en 'familiarizarse' con las propiedades del objeto en cuestion,en tu caso mencionas que :

el problema es que siempre los ejemplos que encuentro es con addline y tengo que reemplazar con el nombre 171 Conector recto de flecha' date=' que es una de las que tengo que modificar. espero que me entiendas[/quote']

lo cual me levaa pensar que no 'encontraste el objeto principal que en este caso seria "Shape"

pues addline es un "Método" que usa el objeto shape para agregar una linea ..de Add=agregar y Line=linea

en sitesis lo que debes hacver es irte al objeto priuncipal desde ahi 'manipular sus propiedades,para lo cual debes revisar en la yauda el Objeto Shape

aquí de tejo la macro que me enviaste por el privado(misma que esta en la ayuda),y ligeramente modificada(solo le asigne un nombre personal a la linea:

Sub crea_linea()
With Worksheets(1).Shapes.AddLine(10, 10, 250, 250).Line
.DashStyle = msoLineDashDotDot
.ForeColor.RGB = RGB(50, 0, 128)
End With
Worksheets(1).Shapes(3).Name = "lineaST"
End Sub[/CODE]

y en seguida te muestro como usar algunas propiedades del objeto en cuestion:

Sub cambia_propiedades_linea()

[CODE]With ActiveSheet.Shapes("lineaST")
.Line.Style = msoLineSingle
.Line.DashStyle = msoLineSolid
.Line.BeginArrowheadStyle = msoArrowheadOval
.Line.EndArrowheadStyle = msoArrowheadTriangle
.Line.ForeColor.RGB = RGB(0, 0, 250)
.Line.Weight = 4.5
End With
End Sub[/CODE]

si eres observador podras ver que la palabra "Line" se repite varias veces dentro del código,pues bien esa puede ir en la pimer linea con la instruccion With ,y te quedaria asi:

[CODE]Sub cambia_propiedades_linea()
With ActiveSheet.Shapes("lineaST")[COLOR="darkred"][B].Line[/B][/COLOR]
.Style = msoLineSingle
.DashStyle = msoLineSolid
.BeginArrowheadStyle = msoArrowheadOval
.EndArrowheadStyle = msoArrowheadTriangle
.ForeColor.RGB = RGB(0, 0, 250)
.Weight = 4.5
End With
End Sub[/CODE]

lee por favor tambien la [color=blue]propieda line[/color] en la yuda y ve su ejemplo para que veas como se puedo haber modificado el 'grosor' desde la pimera macro

en sintesis es cuestion de que revises 'bien' los objetos y prpiedades para poder manipularlos.

solo comentarte que yo tampoco estaba familiarizado con ello lo que me llevo a una pequeña busqueda y algo de paciencia para poder ofertarte esta respuesta.

finalmente deirte/recomendarte la grabadora de macros,pues con ella se aprende muchisimo sobre lo que te he comentado y a sido la fuent inicial de los conocimientos que a la fecha poseo.

crea linea y modifica.zip

Link to post
Share on other sites
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Privacy Policy