Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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
Diagramm positionieren schlägt fehl
Ronny
Hallo,
nach nun einigen erfolgreichen Versuchen mit VBA eigene Makos zu erstellen stehe ich nun vor einem (für mich) größerem Problem.
Ich erzeuge mir per Makro ein Diagramm und lasse es, je nach Position bestimmter "Zeiger", im Arbeitsblatt positionieren.
Leider klappt es nicht wie beabsichtigt. Das neue Diagram wird immer um einen bestimmten absoluten Wert nach Unten verschoben und verursacht dann so im weiteren Verlauf Probleme...
Mein Kode sieht wie folgt aus:
****************************************************************************

Sub dia_erstellen()
Dim Ende As Integer
'Zeilenindex der letzten "Ende***************************
Ende = Cells.Find("Ende", [A1], , , xlByRows, xlPrevious, , True).Row
'Zeilenindex der Zelle ABegin + 6************************
Dim ZeigNam As Integer
ZeigNam = Cells.Find("ABegin", [A1], , , xlByRows, xlPrevious, , True).Row + 6
'Position nach Oben definieren********************************
Dim T As Integer
T = Cells(Ende - 2, 1).Top
'Position nach Links definieren*******************************
Dim L As Integer
L = Cells(Ende - 2, 1).Left
'*Objekt definieren und Arbeitsblatt "GLF" auswählen
Dim chDiagramm As ChartObject
Worksheets("GLF").Select
'*Objekt definieren******************************************
Set chDiagramm = Worksheets("GLF").ChartObjects.Add(L, T, 300, 140)
chDiagramm.Name = Cells(ZeigNam, 3).Value
With chDiagramm.Chart
.ChartType = xl3DPie
.SetSourceData Source:=Sheets("GLF").Range(Cells(Ende + 12, 14), Cells(Ende + 12, 19)),  _
_
_
PlotBy:=xlColumns
.SeriesCollection(1).XValues = "={""gut"",""akzeptabel"",""schlecht""}"
.SeriesCollection(1).Values = "=(GLF!R" & Ende + 12 & "C14,GLF!R" & Ende + 12 & "C16, _
GLF!R" & Ende + 12 & "C18)"
.SeriesCollection(1).Name = "=GLF!R" & ZeigNam & "C3"
.Location Where:=xlLocationAsObject, Name:="GLF"
'*Datenwerte formatieren******************************
.SeriesCollection(1).Points(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 35
.Pattern = xlSolid
End With
.SeriesCollection(1).Points(2).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
End With
.SeriesCollection(1).Points(3).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
With Selection.Interior
.ColorIndex = 38
.Pattern = xlSolid
End With
.ChartArea.Select
With Selection.Border
.Weight = 1
.LineStyle = 0
End With
'*Datenbeschriftung Prozentsätze einfügen***************
.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _
False, HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:= _
False, ShowValue:=False, ShowPercentage:=True, ShowBubbleSize:=False
'*Titel formatieren*************************************
.HasTitle = True
.ChartTitle.Select
With Selection
.Characters.Text = "Wertanteile"
.Font.Bold = True
.Left = 5
.Top = -5
.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 11
End With
End With
'*Legende formatieren************************************
.HasLegend = True
.Legend.Select
With Selection
With Selection.Font
.Name = "Arial"
.Size = 10
End With
.Position = xlBottom
.Width = 265
.Height = 20
.Left = 32
End With
With Selection.Border
.Weight = xlHairline
.LineStyle = xlNone
End With
With Selection.Font
.Name = "Arial"
.Size = 10
End With
'*Zeichnungsfläche formatieren****************************
.PlotArea.Select
With Selection
.Top = 26
.Width = 190
.Height = 76
.Left = 50
.Interior.ColorIndex = xlNone
With Selection.Border
.Weight = xlThin
.LineStyle = xlNone
End With
End With
'*Datenbeschriftung Prozentsätze formatieren***************
.SeriesCollection(1).DataLabels.Select
With Selection.Font
.Name = "Arial"
.Size = 10
End With
'*Zeichnungsfläche in 3D Ansicht formatieren**************
.ChartArea.Select
With ActiveChart
.Elevation = 20
.Perspective = 30
.Rotation = 360
.RightAngleAxes = False
.HeightPercent = 60
End With
.ChartArea.Select
With ActiveChart
End With
End With
Set chDiagramm = Nothing
End Sub

******************************************************************************
Ich bitte die Unausgereiftheit dieses Makros zu entschuldigen. Bin relativ neu im Bereich VBA und wende mich heut das erste mal an Profi's. ;-)
Vielen Dank im Voraus!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Diagramm positionieren schlägt fehl
15.03.2010 10:53:37
xr8k2
Hallo Ronny,
lt. deinem Code würde das Diagramm im Blatt "GLF" in der Zeile, zwei Zeilen vor dem Wort Ende in Spalte A des zu Beginn der Makroausführung aktiven Blattes eingefügt werden. Was ist daran falsch?
Ist vielleicht das aktive Blatt nicht das Gewünschte?
Gruß,
xr8k2
AW: Diagramm positionieren schlägt fehl
15.03.2010 11:04:07
Ronny
Hallo xr8k2,
erstmal vielen Dank für deine Antwort.
Genau das , was du beschrieben hast, macht er auch. Im Prinzip...
Problem ist nur, dass es das Wort Ende öfter gibt. Es wird eine Tabelle in das Blatt GLF eingefügt, an deren Ende das Wort "Ende" steht. ;-)
Da es x Tabellen im Blatt gibt, gibt es das Wort "Ende" auch x-mal. Aus diesem Grund lasse ich immer bevor er das Diagramm einfügt, das letzte Ende mit Cells.Find("Ende"...).Row suchen und mir den Zeilenindex ausgeben. Er findet auch immer diese Zeile und fügt es beim ersten mal auch an dieser Position (+2) ein.
Füge ich aber nun eine neue Tabelle hinzu (unterhalb der ersten), fügt er es nicht an der Stelle Ende+2 ein, sondern verschiebt es auf Ende+3 usw.
Das Ziel ist es, bei jeder neuen Tabelle am Ende eine neues Diagramm zu erzeugen und dieses immer an derselben Stelle, bezogen auf die letzte eingefügten Tabelle, einzufügen.
Ich hoffe, dass Problem ist nun etwas klarer umrissen... ;-)
Anzeige
AW: Diagramm positionieren schlägt fehl
15.03.2010 11:29:42
xr8k2
Hallo Ronny,
sorry, aber klarer ist das für mich leider immer noch nicht. Ich sag ja, dein Diagramm wird korrekt an der angegebenen Position (immer bezogen auf das jeweils aktive Blatt) eingefügt. Ich rate mal dein Problem ist entweder das für die Zeilenbestimmung ein falsches Blatt aktiv ist oder du mehrere "Ende" in deinem aktiven Blatt hast und du mit .Find das falsche findest.
Lad doch mal eine Beispielmappe hoch ... dann wird´s sicherlich für den Einen oder Anderen verständlich.
Gruß,
xr8k2
AW: Diagramm positionieren schlägt fehl
15.03.2010 12:40:49
Ronny
Ich habe mal eine Beispiel Mappe hochgeladen, in der es jetzt irgendwie funktioniert. Im Vergleich zur Ursprungsdatei wurde aber nichts geändert. Ich denke, dass es irgendetwas mit den Bezügen zu tun hat oder mit dem autom. Offset ähnlich dem Kopieren eines Objektes und dem anschliessenden mehrmaligen Einfügen hintereinander.
In der Mappe befrindet sich auch eine weitere Problembeschreibung.
https://www.herber.de/bbs/user/68557.xls
Anzeige
AW: Diagramm positionieren schlägt fehl
15.03.2010 13:19:13
xr8k2
Hallo Ronny,
OK, das Problem hab ich jetzt soweit verstanden ... allerdings wie du schon schreibst ... in der zur Verfügung gestellten Datei scheint es wie gewünscht zu funktionieren.
Wenn deine Originaldatei genau so aufgebaut ist und der Makrocode genau so drinsteht, wüsst ich jetzt nicht, warums dann dort nicht funktionieren sollte.
Gruß,
xr8k2
AW: Diagramm positionieren schlägt fehl
15.03.2010 13:40:55
Ronny
Hey xr8k2,
ich werde wohl nicht umhin kommen, diese Makro erneut Zeile für Zeile durchzugehen und in der Ursprungsdatei zu testen. Vielen Dank erstmal für deine Hilfe.
Grüße Ronny.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige