Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1264to1268
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
Inhaltsverzeichnis

Diagramm erstellen

Diagramm erstellen
Tobi
Hallo Leute,
ich habe eben schon ein ähnliches Problem geopstet. Dieses ist mir aber auch sehr wichtig.
Undzwar habe ich ein Makro erstellt, welches mir ein Diagramm erstellt. Nun möchte ich, dass dieses Diagramm auf einer ganz bestimmten Position ist, wenn ich es erstelle. Undzwar soll es immer 3 Zeilen nach der letzten beschriebenen Zeile in Spalte A eingefügt werden.
Zu beachten ist allerdings, dass die Tabellen immer unterschiedlich lang sind.
Ich hoffe mir kann jemand helfen. Vielen Dank schonmal.
-Tobi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Diagramm erstellen
25.05.2012 16:52:43
fcs
Hallo Tobi,
hier als Ergänzung deines Makros eine Subroutine, die ein Schape-Objekt verschiebt.
Gruß
Franz
Sub prcMakeDiagramm()
Dim wks As Worksheet
'Code zum Erstellen des Diagramms
'Diagramm positionieren (letztes eingefügtes Chart-Objekt)
Set wks = ActiveSheet
With wks
Call prcMoveShape(objShape:=.Shapes(.ChartObjects(.ChartObjects.Count).Name), _
lngSpalte:=1,  lngRowOffset:=3)
End With
Set wks = Nothing
End Sub
Sub prcMoveShape(objShape As Shape, Optional ByVal lngSpalte As Long = 1, _
Optional lngZeile As Long = 0, Optional lngRowOffset As Long = 0)
'Verschiebt Shape-Object in einem Tabellenblatt an gewünschte Zellposition
Dim wks As Worksheet
Set wks = objShape.Parent
With wks
If lngZeile = 0 Then
'Shape soll unter letzte Zeile mit Daten in Spalte verschoben werden
lngZeile = .Cells(.Rows.Count, lngSpalte).End(xlUp).Row + lngRowOffset
End If
With wks.Cells(lngZeile, lngSpalte)
objShape.Top = .Top
objShape.Left = .Left
End With '
End With
End Sub

Anzeige
AW: Diagramm erstellen
25.05.2012 17:56:08
Christian
Hallo Tobi,
du kannst Größe und Position des Diagramms gleich beim Erstellen festlegen. Kommst du mit dem Beispiel parat?
Option Explicit
Sub CreateChart()
Dim ch As ChartObject
Dim dblLeft#, dblHeight#, dblWidth#, dblTop#
With Sheets("Tabelle1")
dblLeft = .Cells(2, 2).Left
dblHeight = 216
dblWidth = 360
dblTop = .Cells(.Rows.Count, 1).End(xlUp).Offset(3).Top
Set ch = .ChartObjects.Add(dblLeft, dblTop, dblWidth, dblHeight)
ch.Chart.ChartType = xlColumnClustered
ch.Chart.SetSourceData .Range("Tabelle1!$D$7:$E$10")
End With
End Sub

Grüße
Christian
Anzeige
AW: Diagramm erstellen
29.05.2012 10:24:34
Tobi
Hallöchen und vielen Dank.
Also Christian ich habe es mit deinem code zunächst versucht weiss aber nicht genau wie ich das da einbauen soll. Ich zeig dir am besten mal mein bisherigen code.
  • Sheets("Balkendiagramm Tabelle").Select
    Columns("D:D").Select
    Range("A:H").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Range("C1:D1").Select
    Selection.ClearContents
    Dim lngLetzte7 As Long
    With Worksheets("Balkendiagramm Tabelle")
    lngLetzte7 = IIf(IsEmpty(.Cells(.Rows.Count, 3)), .Cells(.Rows.Count, 3).End(xlUp).Row, _
    .Rows.Count)
    End With
    Dim lngLetzte8 As Long
    With Worksheets("Balkendiagramm Tabelle")
    lngLetzte8 = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, _
    .Rows.Count)
    End With
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlBarStacked
    ActiveChart.SetSourceData Source:=Worksheets("Balkendiagramm Tabelle").Range("C2:C" & lngLetzte7, "D2:D" & lngLetzte8), PlotBy:=xlColumns
    ActiveChart.HasLegend = False
    ActiveChart.HasDataTable = False

  • SG, Tobi
    Anzeige
    AW: Diagramm erstellen
    29.05.2012 11:58:41
    fcs
    Hallo Tobi,
    für den letzten Abschnitt deines Makros:
        Dim Zelle As Range
    lngLetzte8 = IIf(lngLetzte7 > lngLetzte8, lngLetzte7, lngLetzte8)
    Set Zelle = Cells(lngLetzte8 + 3, 3)
    ActiveSheet.Shapes.AddChart(XlChartType:=xlBarStacked, _
    Top:=Zelle.Top, Left:=Zelle.Left).Select
    ActiveChart.SetSourceData Source:=Worksheets("Balkendiagramm Tabelle").Range("C2:C" _
    & lngLetzte8, "D2:D" & lngLetzte8), PlotBy:=xlColumns
    ActiveChart.HasLegend = False
    ActiveChart.HasDataTable = False
    
    In einem gestapelten Diagramm sollten die Anzahl Einträge bei den Reihen gleich groß sein. Deshalb wird der größere der beiden Werte lngLetzte7 und lngletzte8 für die Diagramm-Datenquelle genommen.
    Gruß
    Franz
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige