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

Excel VBA

Excel VBA
29.01.2021 09:35:01
Gert
Hallo,
In einem Excel-VBA-Algorithmus werden anhand bestimmter Parameter aus einer Tabelle eine Untermenge von Zeilen ausgelesen und in einem Chart darstellt. Dafür wird die 'Fieberkurve' für die Untermenge ordentlich dargestellt. Allerdings zeigt es für die X-Achse zum Beispiel je nach Vorgaben Zahlenwerte wie 1 - 22 oder 1 - 84. Nur betreffen die Werte innerhalb der zugehörigen Tabelle die Zeilen 63-84, bzw 3-86. Ich bin leider noch nicht fündig geworden, wie man die Beschriftung der X-Achse genau diesem Intervall anpasst.
Erfolglos habe ich u.a. vesucht:
With Charts("Chart1").Axes(xlCategory)
.MajorUnit = 100
.MinorUnit = 20
End With

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA
29.01.2021 09:45:21
onur
Was für eine Antwort erwartest du jetzt, obwohl du weder eine Datei gepostet noch uns verraten hast, was für ein Diagramm genau du genommen hast?
AW: Excel VBA
29.01.2021 10:30:57
Gert
Danke für die schnelle Reaktion. Hier der Link auf ein Diagramm:
Userbild
Hier die programmierte Aufbereitung des Diagramms. Die Parameter werden über eine Userformn abgefragt
Public Sub NeuesChart()
Dim Bereich As String
Dim cht As Chart
ThisWorkbook.Charts.Add Before:=Worksheets("Gesamtbilanz")
Bereich = "H" & ChartVon & ":I" & ChartBis + 1
ActiveChart.SetSourceData Worksheets("Gesamtbilanz").Range(Bereich)
ActiveChart.Name = ChartNeu
Set cht = ThisWorkbook.Charts(ChartNeu)
With cht
.ChartType = xlLine
.HasTitle = True
.ChartTitle.Text = "Wertobjekte und Gesamtbilanz"
.ChartTitle.Font.Size = 16
.ChartTitle.Font.FontStyle = "Bold"
.ChartTitle.Font.Color = RGB(255, 0, 0)
.HasLegend = True
.Legend.IncludeInLayout = False
.Legend.Position = xlLegendPositionBottom
.Legend.IncludeInLayout = True
'Trendlinie für Wertobjekte erstellen und konfigurieren
.FullSeriesCollection(1).Name = "Wertobjekte"
.FullSeriesCollection(1).Trendlines.Add
.FullSeriesCollection(1).Trendlines(1).Type = xlPolynomial
.FullSeriesCollection(1).Trendlines(1).Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 112, 192)
.Transparency = 0
End With
'Linienstärke für Fieberkuve Wertobjekte
ActiveChart.FullSeriesCollection(1).Select
With Selection.Format.Line
.Visible = msoTrue
.Weight = 4
End With
'Breite und Linienstil für Trendline Wertobjekte
.FullSeriesCollection(1).Trendlines(1).Select
With Selection.Format.Line
.Visible = msoTrue
.Weight = 5
End With
With Selection.Format.Line
.Visible = msoTrue
.DashStyle = msoLineSysDot
End With
'Trendlinie für Gesamtbilanz erstellen und konfigurieren
.FullSeriesCollection(2).Name = "Bilanz"
.FullSeriesCollection(2).Trendlines.Add
.FullSeriesCollection(2).Trendlines(1).Type = xlPolynomial
.FullSeriesCollection(2).Trendlines(1).Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(192, 0, 0)
.Transparency = 0
End With
'Linienstärke für Fieberkuve Bilanz
ActiveChart.FullSeriesCollection(2).Select
With Selection.Format.Line
.Visible = msoTrue
.Weight = 4
End With
'Breite und Linienstil für Trendline Gesamtbilanz
.FullSeriesCollection(2).Trendlines(1).Select
With Selection.Format.Line
.Visible = msoTrue
.Weight = 5
End With
With Selection.Format.Line
.Visible = msoTrue
.DashStyle = msoLineSysDot
End With
'Plot-Fläche ausfüllen
.ChartArea.Select
.PlotArea.Select
With Selection.Format.Fill
.Visible = msoTrue
.PresetTextured msoTextureParchment
.TextureTile = msoTrue
.TextureOffsetX = 0
.TextureOffsetY = 0
.TextureHorizontalScale = 1
.TextureVerticalScale = 1
.TextureAlignment = msoTextureTopLeft
End With
'Achsen anzeigen
.HasAxis(xlCategory, xlPrimary) = True      'X-Achse
.HasAxis(xlValue, xlPrimary) = True         'Y-Achse
With .Axes(xlCategory) 'Bringt nicht die erhoffte Wirkung
.MajorUnit = 100
.MinorUnit = 20
End With
End With
End Sub

Anzeige
AW: Excel VBA
29.01.2021 10:34:38
onur
Poste doch besser die Datei, da man dem Diagramm nicht entnehmen kann, was du z.B. mit:
"Allerdings zeigt es für die X-Achse zum Beispiel je nach Vorgaben Zahlenwerte wie 1 - 22 oder 1 - 84. Nur betreffen die Werte innerhalb der zugehörigen Tabelle die Zeilen 63-84, bzw 3-86." meinst.
AW: Excel VBA
29.01.2021 11:19:57
Gert
Die Datei ist privat und ihre Bereinigung wäre sehr aufwendig.
In der gesendeten Grafik stehen unter der x-Achse die Werte 1-22, vermutlich weil es eben 22 Positionen aus der Originaltabelle sind. Nur beginnt die Zeilenauswahl der Originaltabelle nicht bei 1 und endet nicht bei 22. Sondern es kann sich zum Beispiel um die Tabellenzeilen 63 bis 84 handeln. Und genau diese Zahlen hätte ich gern in der Beschriftung der X-Achse. Also 63,64,65, ... 84.
Anzeige
AW: Excel VBA
29.01.2021 11:25:12
onur
Tja, ohne die "geheime" Datei kann ich nix sagen, weil ich ja nicht sehen kann, wo im Blatt was steht.
Ausserdem brauche ich nicht die ganze Datei, sondern nur das Blatt (mit Diagramm) mit den Diagrammdaten und die Info, woher das Makro/Diagramm wissen soll, WELCHE X-Werte jetzt relevant sind.
AW: Excel VBA
29.01.2021 12:19:55
Gert
Die Werte 'Von' und 'Bis' stehen als Variable zur Verfügung. Und daraus soll die Beschriftung der x-Achse werden. Also nicht wie derzeit ohne mein zutun
1,2,3, ......................22
sondern
Von, Von+1, Von+2, ..........Bis
Neben den Variablen steht auch eine Spalte mit den Nummern in der Ausgangstabelle zur Verfügung, die aber im Diagramm nicht als Fieberkurve abgebildet wird. Den VBA-Code für die Erstellung des Sheets hatte ich schon übermittelt.
Der Zweck der ganzen Sache ist bildlich ausgedrückt ein Chart in Form eines 'Zooms' auf eine größere Tabelle.
Anzeige
AW: Excel VBA
29.01.2021 12:22:46
onur
Wie bereits gesagt: dann poste halt eine entsprechende Beispielsdatei, denn ICH werde nicht mühsam deine Datei nachbauen, nur um dir helfen zu dürfen.
AW: Excel VBA
29.01.2021 13:01:42
Gert
Der Sub-Code, den ich bereitgestellt habe lässt sich mühelos in einen Excel-VBA-Rahmen einfügen. Aber ich werde in den nächsten Tagen eine komplette auf das Wesentliche beschänkte xlsm-Datei zu basteln.
AW: Excel VBA
29.01.2021 13:05:21
onur
"Der Sub-Code, den ich bereitgestellt habe" nützt aber nix OHNE die Datei dazu.
Es müsste doch eigentlich völlig reichen, wenn du das Blatt mit den Daten (und dem Diagramm, falls auf eigenem Blatt) in eine leere Datei kopierst und diese dann hier postest.
Anzeige
AW: Excel VBA
29.01.2021 13:38:11
onur
Andere Idee - versuch es mit Balkendiagramm.
Was mir aber an deinem Code auffällt: Du hast ZWEI LINIEN, aber auch nur exakt ZWEI Spalten im Diagrammbereich - es müssten jedoch DREI sein.
AW: Excel VBA
29.01.2021 13:48:37
Gert
Ich arbeite gerade an einem vereinfachten Beispiel.
Bis bald.
AW: Excel VBA
29.01.2021 13:50:21
onur
Hast du den zweiten Satz von mir gelesen? DAS könnte die Lösung sein.
AW: Excel VBA
29.01.2021 15:45:24
Gert
Danke für die erneute Wortmeldung.
Ich lade jetzt in aller Eile eine zusammengestriche Excel-Datei hoch.
Vielleicht schafft diese etwas mehr Klarheit:
https://www.herber.de/bbs/user/143422.xlsm
Anzeige
AW: Excel VBA
29.01.2021 15:47:23
onur
Toll, so eine Tabelle ohne Makros und mit Passwortschutz.
AW: Excel VBA
29.01.2021 18:21:54
Gert
Hallo,
ich bin am Staunen. Habe das Ganze ausporbiert und klappt perfekt. Das muss ich erst mal in meinen ausführlichen Code einbauen. Wird aber heute nichts mehr.
Auf jeden Fall vielen Dank für die Hilfe!!!!!!!!!!!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige