Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
700to704
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Diagramm

Diagramm
29.11.2005 08:43:34
Friedrich
Hallo und guten Morgen,
ich erstelle mit u.a. VBA-Code ein Diagramm. Die Datenreihe wird entsprechend von 2 ComboBoxen festgelegt. Dann wird das Diagramm erstellt und in der Form dargestellt.
Hierbei "flackert" das Diagramm bei der Übernahme in das Formular. Der Rechner ist ein 2400er Intel.
Kann der Code optimiert werden oder muß ich das Flackern hinnehmen.
Flackern heist, daß das Diagramm beim Anzeigen von links ins Imagefeld kommt und bis zur gesamten Anzeige der Imagehintergrund schwarz ist. Dies stört ungemein.

Private Sub ZeigeDiagramm()
Dim objDObjekt As ChartObject
Dim objDiagramm As Chart
Dim sngHoehe As Single, sngBreite As Single
Dim strTmpDateiname As String
Application.ScreenUpdating = False
strTmpDateiname = Application.DefaultFilePath & "\tmpXLDiagBild.gif"
Set objDObjekt = ThisWorkbook.Sheets("Diagramm").ChartObjects(1)
Set objDiagramm = objDObjekt.Chart
With objDObjekt
sngHoehe = .Height
sngBreite = .Width
.Height = Me.Image1.Height
.Width = Me.Image1.Width
End With
objDiagramm.Export FileName:=strTmpDateiname, filtername:="GIF"
Me.Image1.Picture = LoadPicture(strTmpDateiname)
With objDObjekt
.Height = sngHoehe
.Width = sngBreite
End With
Set objDiagramm = Nothing
Set objDObjekt = Nothing
Kill strTmpDateiname
Application.ScreenUpdating = True
End Sub


Private Sub cboMonat_Change()
monat = cboMonat.Text
Select Case monat
Case "Januar": zeile = 4
Case "Februar": zeile = 17
Case "März": zeile = 30
Case "April": zeile = 43
Case "Mai": zeile = 56
Case "Juni": zeile = 69
Case "Juli": zeile = 82
Case "August": zeile = 95
Case "September": zeile = 108
Case "Oktober": zeile = 121
Case "November": zeile = 134
Case "Dezember": zeile = 147
End Select
cmdDiagramm.SetFocus
End Sub


Private Sub cboVgr_Change()
vgr = cboVgr.ListIndex
cmdDiagramm.SetFocus
End Sub


Private Sub cmdDiagramm_Click()
Dim bereich As Range
Sheets("Daten").Select
Set bereich = Sheets("Daten").Range(Cells(zeile + index, 4), Cells(zeile + index, 23))
Sheets("Diagramm").ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Values = bereich
ZeigeDiagramm
Set bereich = Nothing
End Sub

End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm
29.11.2005 14:07:01
Herbert
Hi,
select und activate weglassen.
mfg Herbert
AW: Diagramm
29.11.2005 14:51:32
Friedrich
Hallo Herbert,
du meinst doch sicher select/activate bei chartsobjects und chartarea.
Wie greife ich aber dann direkt auf seriescollection zu. Kommt bei
Sheets("Diagramm").ChartObjects("Diagramm 1").ChartArea.SeriesCollection(1).Values = bereich
immer zu einer Fehlermeldung.
Das sheets("daten").select kann ich nicht rausnehmen, da sonst die Fehlermeldung bei set bereich kommt. Bezogen auf cells.
Hilf mir bitte mal auf die Sprünge.......?
Danke im Voraus
Friedrich
AW: Diagramm
29.11.2005 15:26:57
Herbert
Hi,
ungetestet weil keine Lust zum Nachbauen:
Option Explicit

Private Sub cmdDiagramm_Click()
Dim bereich As Range, wsh As Worksheet, dia As Chart
Set wsh = Sheets("Daten")
Set bereich = wsh.Range(wsh.Cells(zeile + Index, 4), wsh.Cells(zeile + Index, 23))
Set dia = Sheets("Diagramm").ChartObjects("Diagramm 1").Chart
dia.SeriesCollection(1).Values = bereich
ZeigeDiagramm
End
End Sub

mfg Herbert
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige