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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige