Visual Basic para Aplicaciones - Grafico en Listbox

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Grafico en Listbox

Publicado por Albert (204 intervenciones) el 24/02/2015 12:09:03
Apreciados foreros, tengo un problema al cargar un grafico en un listbox, vamos por partes
He montado una tabla dinámica en un Excel y de ese filtro saco un grafico, para ver la tabla dinámica en un listbox de un formulario uso el siguiente código

1
2
3
4
5
6
7
8
9
10
11
Private Sub UserForm_Activate()
ActiveSheet.PivotTables("Tabla dinámica8").PivotCache.Refresh
ucol = ActiveCell.SpecialCells(xlLastCell).Column
fin = ActiveCell.SpecialCells(xlLastCell).Address
ListBox1.ColumnCount = ucol
ListBox1.RowSource = "A1:" & fin
 
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlPie
    ActiveChart.SetSourceData Source:=Range("Hoja8!$A$3:$B$13")
end sub

funciona perfecto, el problema es cuando se carga el grafico que he intentado hacerlo con la siguiente instrucción

ActiveChart.Location Where:=xlLocationAsAnualidades.ListBox2 (el grafico se llama Anulidades)

me da el error 424 en tiempo de ejecución
Seguro que no he puesto bien la instrucción he probado poniendo un . entre As y anualidades pero no encuentro la solución.
Segundo problema:
Quisiera que al cerrar el formulario se borre el grafico (ya que se genera cada vez que lanzo el Form. por si han cambiado los datos) lo he intentado con el siguiente código

1
2
3
4
5
6
Private Sub UserForm_terminate()
Dim Grafico As Object
Grafico = ActiveSheet.ChartObjects.Address
ActiveSheet.ChartObjects("Grafico").Activate
ActiveChart.Parent.Delete
End Sub

He creado una variable por que el grafico cambia de nombre cada vez que se genera pero no lo he hecho bien por que no ve la dirección, he utilizado el " UserForm_terminate()" por que creo que es el indicado para usar la "X" del formulario

Mil gracias por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Grafico en Listbox

Publicado por albert (204 intervenciones) el 01/03/2015 19:10:00
Estimados foreros:
He encontrado una solución para el grafico, que si bien no es exactamente lo que yo buscaba me va a servir para mostrar el grafico ahora ya solo me queda ajustarlo de medidas.
Como siempre os la adjunto por si le puede servir a alguien


JuanC 15/11/2011 (que seria de este foro sin sus ayudas?)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim C As Chart
Dim sFileName$
On Error Resume Next
sFileName = ActiveWorkbook.Path & "\" & Mid(CStr(Rnd), 3) & ".gif"
Set C = Worksheets("Hoja1").ChartObjects(1).Chart
C.Export sFileName
If Dir(sFileName) <> "" Then
   Me.Width = 2 * C.ChartArea.Width + 5
   Me.Height = 2 * C.ChartArea.Height + 25
 
   Image1.Height = 2 * C.ChartArea.Height
   Image1.Width = 2 * C.ChartArea.Width
   Image1.Left = 0
   Image1.Top = 0
   Image1.Picture = LoadPicture(sFileName)
End If
 
Set C = Nothing
Kill sFileName


Sigo buscando solución para borrar el gráfico de la hoja donde se genera
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Grafico en Listbox

Publicado por albert (204 intervenciones) el 03/03/2015 20:10:30
Por fin solucionado el borrado del grafico en la hoja, creo que era yo que me quería complicar demasiado la vida, en cambio de poner la instrucción en :
Private Sub UserForm_terminate()
lo he puesto justo detrás de
Kill sFileName en el UserForm_Activate
y funciona perfecto, esta es la simple instrucción por si a alguien le puede servir

Sheets("Hoja8").ChartObjects.Delete

Siento mucho haberos hecho perder el tiempo, pero los que no sabemos programar sino que solo adaptamos código es lo que tenemos.....jeje
Reitero mis disculpas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Grafico en Listbox

Publicado por xve (15 intervenciones) el 04/03/2015 08:06:02
Gracias por compartirlo Albert!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar