Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

Chart mit VBA erstellen

Chart mit VBA erstellen
21.01.2015 13:45:52
Markus
Hallo,
ich bin gerade dabei ein Chart (Diagramm) mit VBA zu erstellen.
Mein Problem ist, dass ich in der unten stehenden Zeile den "Range" Bereich gerne variabel gestalten möchte.
ActiveChart.SetSourceData Source:=Range("Pivot!$JA$3:$ME$7")
Der Variable Bereich wird in dem code vorher ermittelt:
Range("ME3", ActiveCell).Select
Dieser Bereich soll dann verwendet werden.
Bisher habe ich folgendes:
Sub Aktueller_Bereich_markieren()
ActiveSheet.Cells(Application.Match(Application.WorksheetFunction.Max(ActiveSheet.Columns(261)), _
Columns(261), 0), 261).Select
Range("ME3", ActiveCell).Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range("Pivot!$JA$3:$ME$7")
ActiveChart.PlotBy = xlColumns
ActiveChart.SeriesCollection(1).AxisGroup = 2
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ChartType = xlLine
End Sub

Ich denke es sollte irgendwie gehen, stehe aber irgendwie gerade auf dem Schlauch....
Wäre super wenn mir jemand helfen könnte.
Vielen Dank.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Chart mit VBA erstellen
21.01.2015 13:58:44
yummi
Hallo Markus,
kannst du das so machen:
ActiveChart.SetSourceData Source:=Range("Pivot!ME3", ActiveCell.Address))
Gruß
yummi

AW: Chart mit VBA erstellen
21.01.2015 14:04:50
Markus
Vielen Dank für die schnelle Antwort yummi,
wenn ich den Code aber einfüge erhalte ich einen Syntaxfehler....

AW: Chart mit VBA erstellen
21.01.2015 14:07:43
Markus
Ok, Syntaxfehler war wohl wegen der 2. Klammer zu. Die wird nicht benötigt.
Wenn ich die Klammer weg mache, erhalte ich aber den Laufzeitfehler 91:
Objektvariable oder With-Blockvariable nicht festgelegt.

AW: Chart mit VBA erstellen
21.01.2015 14:30:09
Klaus
Hallo Markus,
ich habe ein Sub zum erstellen von Charts in meiner Sammlung. Im Aufruf die Bereiche so setzt wie du sie brauchst und alles andere nach deinen Wünschen einstellen (die Schalter dazu sind direkt im Code erklärt).
Grüße,
Klaus M.vdT.
Option Explicit
'* Module for quick creation of charts in the active worksheet
'* created: June 2013 by Klaus M.vdT.
'* every feature after data-Range is optional!
Sub test()
Call MakeSingleChart(Range("B4:C12"), 1, Range("A1"), 300, 200, 10, 90, True)
Call MakeSingleChart(Range("B4:C12"), , , , , , , False)
Call MakeSingleChart(Range("B4:C12"))
End Sub
Sub MakeSingleChart( _
rngData As Range, _
Optional TypeChart As Integer, _
Optional rngTopLeftCell As Variant, _
Optional iHeight As Variant, _
Optional iWidth As Variant, _
Optional iScaleMin As Variant, _
Optional iScaleMax As Variant, _
Optional bNoLegend As Boolean)
'rngData = Range of Data
'TypeChart 1=Line, 2=Pie, 3=Column, 4=ColumnStacked, 5=ColumStacked100, none=Line
'rngTopLeftCell = Move Chart's top left corner to THIS cell, places in mid-screen if not  _
choosen
'iHeight and iWidth = Height/Width in Pixels, uses standard if not choosen
'iScaleMin and iScaleMax = FIX X-Axis to this value. If not choosen, chart will autoscale
'bNoLegend = if TRUE, Legend is removed. If FALSE or not choosen, Legend stays in the chart
On Error GoTo hell
'rngTopLeftCell hast to be a valid RANGE, iHeight a valid INTEGER and so on
'  Declaration has to be VARIANT to enable the ISMISSING feature. In case of wrong usage
'  (example: set height to "hello world") it will end with ONERROR
Dim myCht As Object
Set myCht = ActiveSheet.Shapes.AddChart       'create new Chart
With myCht
With .Chart
'Chart definitions ************************************
.ChartType = xlLine    'set Line as standard
Select Case TypeChart
Case 1
Case 2
.ChartType = xlPie
Case 3
.ChartType = xlColumnClustered
Case 4
.ChartType = xlColumnStacked
Case 5
.ChartType = xlColumnStacked100
Case Else
End Select
.SetSourceData Source:=rngData
' ************************************ Chart Definitions
If bNoLegend Then .Legend.Delete           'Legend or not?
End With
'move and scale ************************************
If Not IsMissing(iScaleMax) Then .Chart.Axes(xlValue).MaximumScale = iScaleMax
If Not IsMissing(iScaleMin) Then .Chart.Axes(xlValue).MinimumScale = iScaleMin
If Not IsMissing(rngTopLeftCell) Then
.Top = rngTopLeftCell.Top
.Left = rngTopLeftCell.Left
End If
If Not IsMissing(iHeight) Then .Height = iHeight
If Not IsMissing(iWidth) Then .Width = iWidth
'************************************ move and scale
End With
GoTo heaven:
hell:
'get rid of wrong chart
myCht.Delete
'display error messge
MsgBox "could not create chart!" & vbCrLf _
& "Error Number: " & Err.Number & _
vbCrLf & "Error: " & Err.Description
heaven:
End Sub

Anzeige
AW: Chart mit VBA erstellen
21.01.2015 14:31:18
yummi
Hallo Markus,
sry : fehlte
ActiveChart.SetSourceData Source:=Range("Pivot!ME3:", ActiveCell.Address)
Gruß
yummi

AW: Chart mit VBA erstellen
21.01.2015 14:45:16
Markus
Hallo yummi,
auch mit deinem abgewandelten Code kommt der Laufzeitfehler 91.
@ Klaus: mit deinem Code komm ich leider überhaupt nicht weiter.... der ist etwas zu kompliziert...
Danke für eure Hilfe.

AW: Chart mit VBA erstellen
21.01.2015 14:50:32
yummi
Hallo Markus,
dann lad doch mal deine Datei hoch, dann schau ich mir den Laufzeitfehler mal an.
Gruß
yummi

AW: Chart mit VBA erstellen
21.01.2015 15:49:27
Markus
Hallo yummi,
habe die Datei hochgeladen.
https://www.herber.de/bbs/user/95144.xlsm
gruss und Danke Markus

Anzeige
AW: Chart mit VBA erstellen
21.01.2015 15:52:35
yummi
Hallo Markus,
was muss ich denn machen, damit ich den Fehler sehe?
Gruß
yummi

AW: Chart mit VBA erstellen
21.01.2015 16:07:08
Markus
Hallo yummi,
Entschuldigung... hätte ich natürlich direkt dazu schreiben sollen...
Also, wenn ich im Blatt "Pivot" Zuerst auf den Button "zur Tabelle springen" drücke, komme ich zur Spalte "JA".
Dort ist eine weitere Tabelle hinterlegt.
Im Modul 1 (Button "Diagramm erstellen")ist mein Makro hinterlegt. Wenn ich dort die Zeile von Dir eintrage kommt der Fehler.
Ich habe hier:
ActiveChart.SetSourceData Source:=Range("Pivot!$JA$3:$ME$7")
stehen.
und du hattest:
ActiveChart.SetSourceData Source:=Range("Pivot!ME3:", ActiveCell.Address)
stehen.
Derzeit kommt da nur KW 1-4 wenn ich auf "Diagramm erstellen" drücke.... Dies hatte ich für 2015 mit dem Makro Rekorder so eingestellt.
Wenn nun aber beispielsweise KW5 hinzukommt wird es im Diagramm nicht angezeigt, da in meiner Formel steht, das nur der Bereich JA3 bis ME7 betrachtet werden soll.
ActiveChart.SetSourceData Source:=Range("Pivot!$JA$3:$ME$7").
Ich möchte hier nicht die Komplette Tabelle (JA3:ME55) angeben, da das Diagramm dann total überfüllt ist.
gruss Markus

Anzeige
AW: Chart mit VBA erstellen
21.01.2015 16:12:41
yummi
Hallo Markus,
hatte es schon gefunden ;-)
der fehler kam deshalb weil du ein neues Sheet erzeugst (addChart) dann ist natürlich die ActiveCell weg, deshalb der Fehler 91. Ich hab dir mal deine Funktion erweitert, so dass es jetzt variabel geht

Sub Aktueller_Bereich_markieren()
Dim strRange As String
ActiveSheet.Cells(Application.Match(Application.WorksheetFunction.Max(ActiveSheet.Columns(261)), _
Columns(261), 0), 261).Select
ActiveCell.Select
strRange = "Pivot!ME3:" & ActiveCell.Address
Charts.Add
ActiveChart.ChartType = xlColumnClustered
'ActiveChart.SetSourceData Source:=Range("Pivot!$JA$3:$ME$7")
ActiveChart.SetSourceData Source:=Range(strRange)
ActiveChart.PlotBy = xlColumns
ActiveChart.SeriesCollection(1).AxisGroup = 2
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).ChartType = xlLine
End Sub
Du kannst jetzt eine Zelle in deienr Tabelle markieren und anschliessend auf den Button klicken und dein Diagramm wird variabel erstellt. Sollte das sein, was Du wolltest
Gruß
yummi

Anzeige
AW: Chart mit VBA erstellen
21.01.2015 16:21:52
Markus
yummi,
DU BIST DER BESTE !!!
Danke !
Genau SO wollte ich es haben.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige