Poner un gráfico de Excel en VBA

27/09/2005 - 21:31 por Augusto Unten | Informe spam
Estimados amigos... alguien puede sugerirme como puedo poner un gràfico de
excel en un USERFORM haciendo un clic en un botòn digamos que aparezca un
grafico en columnas de las ventas... otro boton y aparezca un grafico de
gastos... etc
Podràn ayudarme?
Gracias.

ARENART SRL
Augusto Unten T.
Gerencia de Operaciones
Bartolomé Herrera 451 - Lince
Teléfono (511)2657878 - Celular (511)97923211
website: http://www.arenart.com
 

Leer las respuestas

#1 Héctor Miguel
28/09/2005 - 05:46 | Informe spam
hola, Augusto !

... como puedo poner un grafico de excel en un USERFORM
... clic en un boton... que aparezca un grafico en columnas de las ventas
... otro boton y aparezca un grafico de gastos... etc...



si los datos que quieres graficar son... 'estaticos/fijos/historicos/...'
[creo que] la forma que necesitas la encuentras [con ejemplos descargables'] en...
-> http://j-walk.com/ss/excel/tips/tip66.htm

o... puedes incrustar un grafico [inter-]activo [NO imagen] en un formulario si...
-> agregas dos controles a tu formulario de la serie 'office web components'...
1 control 'Spreadsheet' y 1 control 'ChartSpace'
si no los tienes disponibles en la caja de herramientas de vba, los puedes agregar con...
-> click-derecho [en algun lugar 'vacio' de la caja de herramientas] -> mas controles...
[los encuentras por orden alfabetico como Microsoft Office Chart/Spreadshet x.0]
-> 1° el objeto 'spreadsheet' lo 'casas' con los datos de alguna hoja de calculo y...
-> 2° el objeto 'chartspace' lo enlazas a los datos del objeto 'spreadsheet'
[puedes 'ocultar' en el formulario el 'spreadsheet' si le encimas el 'chartspace']

te expongo los codigos de un ejemplo suponiendo un grafico de lineas con 'origen' en 'A1:B5' de la hoja1
si cualquier duda... comentas?
saludos,
hector.
en el modulo de codigo del formulario ==Private Sub UserForm_Activate()
Actualiza
End Sub
Private Sub UserForm_Terminate()
GraficoAlaVista = False
End Sub
Sub Actualiza()
Dim Fila As Byte, Col As Byte, Dato
With Spreadsheet1
For Col = 1 To 2
For Fila = 1 To 5
Dato = Worksheets("Hoja1").Cells(Fila, Col)
.Cells(Fila, Col) = Dato
Next
Next
End With
With ChartSpace1: .Clear
Set Cc = .Constants
Set .DataSource = Me.Spreadsheet1
.Charts.Add
With .Charts(0)
.Type = Cc.chChartTypeLineMarkers
.SetData Cc.chDimCategories, 0, "a2:a5"
.SetData Cc.chDimSeriesNames, 0, "b1"
.SeriesCollection(0).SetData Cc.chDimValues, 0, "b2:b5"
End With
End With
End Sub
en el modulo de codigo de 'la hoja' ==Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("a1:b5")) Is Nothing Then Exit Sub
If Not GraficoAlaVista Then Exit Sub
UserForm1.Actualiza
End Sub
en un modulo de codigo 'normal' ==Public GraficoAlaVista As Boolean
Sub MostrarFormulario()
UserForm1.Show vbModeless
GraficoAlaVista = True
End Sub

Preguntas similares