habe hier schon viele Antworten gefunden, aber jetzt hakt´s.
ich möchte eine Grafik (chart), welche in einer Tabelle eingebunden ist, per VBA in einem gesond. Fenster anzeigen lassen. Habe im Netz auch was gefunden, aber der Code aktuallisiert den Chart beim zweiten Aufruf nicht. Aus einer Userform füttere ich eine Tabelle, aus welcher wiederum das Chart erzeugt wird. In der Tabelle wird jede Änderung sofort richtig angezeigt. In der Userform gibt´s einen Button, welcher die Grafik als picture in der Userform anzeigt - hier zeigt´s beim ersten mal starten die Grafik richtig an. Nun wird Userform-Grafikanzeige geschlossen. Werden nun Werte in der Userform geändert und per Click in die Tabelle übertragen, und die Grafik per Button neu angezeigt, zeigt es immer noch die erste Version. Vermutlich muss man irgend wann das "Diagramm" oder das "Picture" zu Null setzen. (Ergänzung: lt. Code wird unter C:\temp\Dagramm.gif erzeugt. Wird diese aus dem Explorer aus geöffnet, zeigt sich, dass alle Änderungen übernommen wurden. Aber die Grafik-Anzeige in der Userform zeigt trotzdem den ersten Stand)
Anbei mein Code in der Userform, aus der die Grafik gestartet wird:
Private Sub StabiGrafik_Click()
Dim Diagramm As ChartObject
Dim lngWidth As Long, lngHeight As Long
Set Diagramm = Sheets("Tabelle1").ChartObjects(5) 'auf der Tab.1 gibt es 5 Chart´s - das fünfte soll angezeigt werden
Application.ScreenUpdating = False
With Diagramm
lngWidth = .Width
lngHeight = .Height
.Height = Application.Height / 1.5
.Width = Application.Width / 2
.Chart.Export Filename:="C:\Temp\Diagramm.gif"
.Height = lngHeight
.Width = lngWidth
End With
frmStabiGrafik.Show 'so heist die Userform, in der das Chart angezeigt werden soll
Application.ScreenUpdating = True
End Sub
in der Userform kommt dann folg. Code:
Private Sub Userform_Initialize()
Me.Height = Application.Height / 1.5
Me.Width = Application.Width / 2
Me.Picture = LoadPicture("C:\TEMP\Diagramm.gif")
Me.PictureSizeMode = fmPictureSizeModeClip
End Sub
Die erste Grafik wird richtig angezeigt,
Vielen Dank für eure Hilfe.