Ayuda macro para crear títulos de gráficos dependiendo de valor de celdas

Buenas amigos soy nuevo en este foro que aunque no allá estado registrado me ayudado enormemente y le doy gracias a todos los expertos por esos.

Les planteo mi problema para ver si me pueden ayudar, yo lo que quiero es que con una macro me creen los títulos de unos gráficos dependiendo de unos valores que tengo en una hoja que en este caso se llama "PRUEBA". Tengo 4 gráficos uno de TASA, PRESIÓN, DENSIDAD y GRÁFICA TOTAL. Los 4 gráficos llevan el mismo titulo que depende del valor que este en mi hoja "PRUEBA" en las celdas desde A1 hasta A10.

Esta es la hoja prueba y los valores que quiero como titulo del gráfico desde A1 hasta A10

Y este es es uno de los gráficos y como quiero que quede el titulo

Otra pregunta en los gráficos yo necesito comentarlos como aparece en la imagen PREFLUJOS, LECHADA, DESPLAZAMIENTOS se podría hacer una lista desplegable donde yo pueda elegir una opción y yo colocarlo donde quiera que este dicha opción? Es para ahorrarme estar escribiendo cada vez que voy hacer un gráfico..

De antemano les doy las gracias ya que soy un aprendiz y les aclaro que este es un proyecto de pasantias que me asigno el supervisor de el departamento de instrumentación de la empresa CPVEN para automatizarles el proceso de elaboración de reportes en gráficos.

1 respuesta

Respuesta
1

Te dejo el código que puede mejorar tu proceso, te comento que en cuanto a los comentarios lo más que pude lograr fue adicionarlos de manera predeterminada cada vez que se genere un gráfico (puedes modificar la posición y longitud de las flechas de manera independiente) para que los copies, ubiques y edites de acuerdo a la necesidad de cada gráfico (por lo menos te evitas tener que digitar cada vez).

Para que el código funcione debes insertarlo en el código del libro (ThisWorkbook). Quedo pendiente de tu éxito. Saludos

Private Sub Workbook_NewChart(ByVal Ch As Chart)
''Creada por FSerrano en 120313
''para Alexdream en TodoExpertos.com
''Configura un grafico al ser insertado
'Configura el título del gráfico
 a = Application.WorksheetFunction.Substitute(Application.WorksheetFunction.Substitute(Ch.SeriesCollection(Ch.SeriesCollection.Count).Formula,"=SERIES(,",""),",1)","")
 hoja = Mid(a, 1, InStr(1, a,"!") - 1)
 If Ch.HasTitle = False Then
     Ch.SetElement (msoElementChartTitleAboveChart)
 End If
 For Each cell In Sheets("" & hoja & "").Range("a1:b10")
     If cell <> "" Then
         titulo = titulo & UCase(cell.Value) & " "
     End If
 Next cell
 Ch.ChartTitle.Text = titulo
'Inserta los cuadros de texto que son anotaciones sobre el gráfico
'Acotación PREFLUJOS
 ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 80, 0, 0).Select
 Selection.ShapeRange.Line.Visible = msoFalse
 texto = Selection.Name
 With Selection.ShapeRange.TextFrame2
     .TextRange.Characters.Text = "PREFLUJOS"
     .MarginLeft = 0
     .MarginRight = 1
     .MarginTop = 0
     .MarginBottom = 0
     .TextRange.Font.Bold = msoTrue
     .WordWrap = msoFalse
     .AutoSize = msoAutoSizeShapeToFitText
     With Selection.ShapeRange.Fill
         .Visible = msoTrue
         .ForeColor.ObjectThemeColor = msoThemeColorBackground1
         .ForeColor.TintAndShade = 0
         .ForeColor.Brightness = 0
         .Transparency = 0
         .Solid
     End With
 End With
 XPos = 50 + Selection.ShapeRange.TextFrame2.TextRange.BoundWidth / 2
 YPos = 80 + Selection.ShapeRange.TextFrame2.TextRange.BoundHeight
 ActiveChart.Shapes.AddConnector(msoConnectorStraight, XPos, YPos, XPos, YPos + 30).Select
 flecha = Selection.Name
 With Selection.ShapeRange.Line
     .EndArrowheadStyle = msoArrowheadOpen
     .Style = msoLineSingle
 .Visible = msoTrue
     .Weight = 1.25
     .Visible = msoTrue
     .ForeColor.ObjectThemeColor = msoThemeColorText1
     .ForeColor.TintAndShade = 0
     .ForeColor.Brightness = 0
 End With
 ActiveChart.Shapes.Range(Array("" & flecha & "","" & texto & "" )).Select
 Selection.ShapeRange.Group.Select
'Acotación LECHADA
 ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 150, 80, 0, 0).Select
 Selection.ShapeRange.Line.Visible = msoFalse
 texto = Selection.Name
 With Selection.ShapeRange.TextFrame2
     .TextRange.Characters.Text = "LECHADA"
     .MarginLeft = 0
     .MarginRight = 1
     .MarginTop = 0
     .MarginBottom = 0
     .TextRange.Font.Bold = msoTrue
     .WordWrap = msoFalse
     .AutoSize = msoAutoSizeShapeToFitText
     With Selection.ShapeRange.Fill
         .Visible = msoTrue
         .ForeColor.ObjectThemeColor = msoThemeColorBackground1
         .ForeColor.TintAndShade = 0
         .ForeColor.Brightness = 0
         .Transparency = 0
         .Solid
     End With
 End With
 XPos = 150 + Selection.ShapeRange.TextFrame2.TextRange.BoundWidth / 2
 YPos = 80 + Selection.ShapeRange.TextFrame2.TextRange.BoundHeight
 ActiveChart.Shapes.AddConnector(msoConnectorStraight, XPos, YPos, XPos, YPos + 30).Select
 flecha = Selection.Name
 With Selection.ShapeRange.Line
     .EndArrowheadStyle = msoArrowheadOpen
     .Style = msoLineSingle
     .Visible = msoTrue
     .Weight = 1.25
     .Visible = msoTrue
     .ForeColor.ObjectThemeColor = msoThemeColorText1
     .ForeColor.TintAndShade = 0
     .ForeColor.Brightness = 0
End With
 ActiveChart.Shapes.Range(Array("" & flecha & "","" & texto & "")).Select
 Selection.ShapeRange.Group.Select
'Acotación DESPLAZAMIENTOS
 ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, 250, 80, 0, 0).Select
 Selection.ShapeRange.Line.Visible = msoFalse
 texto = Selection.Name
 With Selection.ShapeRange.TextFrame2
     .TextRange.Characters.Text = "DESPLAZAMIENTOS"
     .MarginLeft = 0
     .MarginRight = 1
     .MarginTop = 0
     .MarginBottom = 0
     .TextRange.Font.Bold = msoTrue
     .WordWrap = msoFalse
     .AutoSize = msoAutoSizeShapeToFitText
     With Selection.ShapeRange.Fill
         .Visible = msoTrue
         .ForeColor.ObjectThemeColor = msoThemeColorBackground1
         .ForeColor.TintAndShade = 0
         .ForeColor.Brightness = 0
         .Transparency = 0
         .Solid
     End With
 End With
 XPos = 250 + Selection.ShapeRange.TextFrame2.TextRange.BoundWidth / 2
 YPos = 80 + Selection.ShapeRange.TextFrame2.TextRange.BoundHeight
 ActiveChart.Shapes.AddConnector(msoConnectorStraight, XPos, YPos, XPos, YPos + 30).Select
 flecha = Selection.Name
 With Selection.ShapeRange.Line
     .EndArrowheadStyle = msoArrowheadOpen
     .Style = msoLineSingle
     .Visible = msoTrue
     .Weight = 1.25
     .Visible = msoTrue
     .ForeColor.ObjectThemeColor = msoThemeColorText1
     .ForeColor.TintAndShade = 0
     .ForeColor.Brightness = 0
 End With
 ActiveChart.Shapes.Range(Array("" & flecha & "","" & texto & "")).Select
 Selection.ShapeRange.Group.Select
End Sub

NO OLVIDES FINALIZAR Y PUNTUAR LA PREGUNTA

Amigo muchas gracias por responder y ayudarme con lo que estoy haciendo pero al colocar el código que me has proporcionado donde has dicho en ThisWorkBook no sucede nada, No soy un experto en excel por cual necesito que seas un poco mas explicito. No se si te puedo dejar el libro de excel donde estoy trabajando y lo intentas hacer tu para ver si te funciona.

Muchas gracias

El código se ejecuta automáticamente cuando insertas un gráfico nuevo (había olvidado mencionar eso)... pruébalo y me comentas.

Amigo gracias por responder me gustaría que vieras mi formato y lo trataras de hacer porque yo los gráficos ya los tengo insertados que son las hojas que se llaman TASA, PRESIÓN , DENSIDAD Y GRÁFICA TOTAL. Las gráficas se realizan según los datos que tenga en la hoja PRUEBAS y la de gráfico total según los datos que tenga en la hoja datos gráfica total. Aquí te dejo el link para que le eches un ojo http://dl.dropbox.com/u/14171402/formtato%20de%20alexdream.rar

Te dejo el link desde donde puedes descargar el archivo modificado para que actualice los títulos de acuerdo a lo que me comentaste. Pruébalo y me cuentas como te va.

Excelente el trabajo el que hiciste lo acabo de probar y era exactamente lo que quería. Te quería hacer dos preguntas la primera es si se puede usar el Msgbox para cuando no allá nada en la Hoja PRUEBAS y darle en configurar títulos salga un mensaje diciendo por ejemplo que No hay nada en la hoja para configurar los títulos y la otra pregunta es como hacer para cuando le de a limpiar contenido me borre los títulos de todos los gráficos. No se si hago otro post o seguimos en el mismo para finalizar la pregunta y darte la puntuación correspondiente.

Muchísimas gracias por tu ayuda

Listo!

He modificado el archivo para incluir tus últimos comentarios (descarga desde el mismo link anterior), pruébalo y me cuentas.

Que rapido amigo Excelente tu trabajo mejor imposible muchísimas gracias por tu ayuda, tus respuestas muy rápidas y precisas. Éxitos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas