Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA_Bug

Forumthread: VBA_Bug

VBA_Bug
17.08.2015 11:02:20
Raphael
Hallo Community,
ich habe leider ein Bug in meinen beiden Codes zur Erstellung der Diagramme.
Wenn ich das Makro in der dem jeweiligen Arbeitsblatt des Diagramms über Makros-Makro ausführen, ablaufen lasse funktioniert alles einwandfrei.
Möchte ich das Diagramm über eine Schaltfläche erstellen, welche auf einem anderen Arbeitsblatt zu finden ist ("Hier klicken um MSTA-Diagramm zu erstellen") bekomme ich ständig einen Fehler, welcher wie folgt lautet:
"Objektvariable oder With Blockvariable nicht festgelegt"
Über eure Unterstützung zur Lösung des Problems würde ich mich sehr freuen.
Anbei die Datei inkl. den Makros.
https://www.herber.de/bbs/user/99639.xlsm
Viele Grüße,
Raphael

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA_Bug
17.08.2015 12:14:03
Rudi
Hallo,
alles eine Frage der richtigen Referenzierung.
Sub Complete_Create_and_Format_Diagramm_KW()
'Tabelle erstellen
Dim rngBereich As Range
Dim lngLetzte As Long
Dim lngReihe As Long
Dim cht As Chart
With Worksheets("Datentabelle_KW")
' letzte belegte Zeile in Spalte B
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), _
.Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count)
Set rngBereich = .Range(.Cells(10, 2), .Cells(lngLetzte, 54))
End With
With Worksheets("Diagramm_KW")
On Error Resume Next
Set cht = .ChartObjects("MSTA_KW").Chart 'bereits vorhanden?
On Error GoTo 0
If cht Is Nothing Then
'nein, erstellen
Set cht = .Shapes.AddChart.Chart
End If
With cht
.ChartType = xlLineMarkers
.SetSourceData Source:=rngBereich, PlotBy:=xlRows
.Parent.Name = "MSTA_KW"
.Legend.IncludeInLayout = True
With .Axes(xlValue)
.MaximumScale = 52
.MinimumScale = 0
.MajorUnit = 1
.TickLabels.NumberFormat = "KW ##"
.TickLabels.NumberFormat = "KW ##"
End With
With .Axes(xlCategory)
.TickLabels.NumberFormat = "KW ##"
.TickLabels.NumberFormat = "KW ##"
.AxisBetweenCategories = False
End With
For lngReihe = 1 To .SeriesCollection.Count
With .SeriesCollection(lngReihe)
.MarkerStyle = 2
.MarkerSize = 8
End With
Next lngReihe
With .Parent
.Top = .Parent.Range("B2").Top
.Left = .Parent.Range("B2").Left
.Width = 1200
.Height = 800
End With
End With
End With
Set rngBereich = Nothing
End Sub

Gruß
Rudi

Anzeige
AW: VBA_Bug
17.08.2015 15:18:31
Raphael
Toller Lösungsweg!
Vielen Dank Rudi

AW: VBA_Bug
17.08.2015 16:32:19
Raphael
Hallo Rudi,
könntest du mir bitte noch bei der Variablen Deklarierung helfen ?
Ich habe im Blatt "Datentabelle" in der Zelle G3 einen Wert, welchen ich gerne als Variable verwenden möchte.
Hier soll die Range für die Diagrammerstellung z.B. F3:Fk sein usw
Hier mein bisheriger Ansatz
Sub TEST()
Dim k As Integer
With Sheets("Datentabelle")
k = Cells(3, 7).Value
End With
Sheets("Tabelle1").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlBarStacked
'Diagrammname
Worksheets("Tabelle1").ChartObjects(1).Name = "Gantt_Diagramm"
'Datenrange anwählen
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Values = "=Datentabelle!$F$13:$Cells(6,k)"
ActiveChart.SeriesCollection.NewSeries
""""""Diese Vorgehensweise von Cells (7,k) und bei der Series Collection Cells (8,k) würde ich gerne übernehmen"""""
ActiveChart.SeriesCollection(2).Values = "=Datentabelle!$H$13:$H$80"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Values = "=Datentabelle!$I$13:$I$80"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Values = "=Datentabelle!$F$13:$F$80"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).Values = "=Datentabelle!$H$13:$H$80"
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).XValues = "=Datentabelle!$B$13:$B$80"

Anzeige
AW: VBA_Bug
17.08.2015 21:23:25
Luschi
Hallo Raphael,
so sollte es klappen:
ActiveChart.SeriesCollection(1).Values = "=Datentabelle!$F$13:$F$" & k
bzw.
ActiveChart.SeriesCollection(1).Values = "=Datentabelle!$F$13:$F$" & CStr(k)
Gruß von Luschi
aus klein-Paris

AW: VBA_Bug
18.08.2015 09:35:05
Raphael
Guten Morgen Luschi,
vielen Dank für deine schnelle Antwort.
Hm leider habe ich ein Zuordnungsproblem....er erkennt mir die 1 Zeile nicht mehr (siehe bitte Screenshot)
Sub Create_Table()
'k-Variable deklarieren
Dim k As Integer
With Sheets("Datentabelle")
k = Cells(3, 7).Value
End With
'Vorhandenes Diagramm ersetzen
With Sheets("Tabelle1")
.ChartObjects("Gantt_Diagramm").Delete
End With
'Gantt Diagramm erstellen
Sheets("Tabelle1").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlBarStacked
'Diagrammname
Worksheets("Tabelle1").ChartObjects(1).Name = "Gantt_Diagramm"
'Datenrange anwählen
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Values = "=Datentabelle!$F$11:$F$" & k
Userbild
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige