Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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 dynamischer Bereich

Diagramm dynamischer Bereich
26.06.2020 13:18:01
Anni
Hallo,
ich möchte gerne Diagramme so über VBA anpassen, dass immer nur die Werte bis zur letzten Zeile angezeigt werden.
Es handelt sich um Balkendiagramme.
Bisher habe ich
Sub Diagramm_Format() Dim FinalRow As Long FinalRow = Cells(Rows.Count, 2).End(xlUp).Row ActiveSheet.ChartObjects("Diagramm 3").Activate ActiveChart.SetSourceData Source:=Range("D6:E" & FinalRow) End Sub Das funktioniert soweit aber bei:
Sub
ActiveSheet.ChartObjects("Diagramm 7").Activate
ActiveChart.SetSourceData Source:=Range("D6:D" & FinalRow, "F6:F" & FinalRow)
End Sub
möchte ich Spalte D und Spalte F im Diagramm darstellen. Raus kommt aber immer Range D6 bis F... , also die Spalte dazwischen auch. Wie bekomme ich das auch ohne Spalte E hin?
Danke im Voraus:)
Anni

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Entweder mit UNION oder wie in Excel gar nicht
26.06.2020 13:21:34
lupo1
... ist da meine Vermutung. Oder:
Range("D6:D" & FinalRow, ",F6:F" & FinalRow) statt
Range("D6:D" & FinalRow, "F6:F" & FinalRow)
ups, ich meinte
26.06.2020 13:29:27
lupo1
Range("D6:D" & FinalRow & ",F6:F" & FinalRow) statt
Range("D6:D" & FinalRow, "F6:F" & FinalRow)
AW: ups, ich meinte
26.06.2020 14:02:55
Anni
Danke die Variante
Range("D6:D" & FinalRow & ",F6:F" & FinalRow)
hat funktioniert.
Schönes Wochenende :)
Geht auch ohne Union...
26.06.2020 17:24:36
Beverly
Hi Anni,
...indem man zuerst 1 Datenreihe als Datenquelle zuweist und anschließend die zweite als neue Datenreihe:
    Dim FinalRow As Long
With ActiveSheet
FinalRow = .Cells(Rows.Count, 2).End(xlUp).Row
' 1 Datenreihe als Datenquelle zuweisen
.ChartObjects("Diagramm 7").Chart.SetSourceData _
Source:=.Range("D6:D" & FinalRow)
' neue Datenreihe hinzufügen
.ChartObjects("Diagramm 7").Chart.SeriesCollection.NewSeries.Values = _
.Range("F6:F" & FinalRow)
End With



Anzeige
Falls d Verkettung nichtverbundener Bereiche stört
26.06.2020 17:34:32
lupo1
... ginge auch:
... Range(Substitute("D6:D#,F6:F#,I6:I#,L6:L#", "#", """ & FinalRow & """))
Die Anzahl oder Anordnung der notwendigen Gänse habe ich dabei nicht getestet; könnte hier falsch sein.
AW: Falls d Verkettung nichtverbundener Bereiche stört
27.06.2020 21:09:41
Luschi
Hallo Lupo1,,
bei mir klappt das aber so:
Range(WorksheetFunction.Substitute("D6:D#,F6:F#,I6:I#,L6:L#", "#", CStr(FinalRow)))
Gruß von Luschi
aus klein-Paris
Merci für die Gruppenarbeit ;)
28.06.2020 12:06:29
lupo1
Ich bin nicht so ein VBA-Held. Aber ich freue mich, das mit dem Substitute angestoßen haben zu dürfen.
AW: Merci für die Gruppenarbeit ;)
28.06.2020 12:16:34
Daniel
es könnte aber sein Lupo, dass du dir das nicht selber ausgedacht, sondern irgendwo abgeschrieben hast.
Die Methode, einen Variable über das Austauschen bzw Ersetzen eines Dummy-Wertes in einen fixen Text einzubringen, wird hier im Forum ja schon seit längerem vorgestellt (wenn auch eher beim erstellen von Formeln durch VBA.)
Anzeige
Da kann ich Dich beruhigen ...
28.06.2020 12:22:08
lupo1
... außerdem hätte das dann ja schon ein anderer hier bei dem klassischen Fall einer Mehrbereichsauswahl verwendet. Da hätte also nicht erst ich kommen müssen, wenn es so bekannt wäre.
AW: Da kann ich Dich beruhigen ...
28.06.2020 12:29:56
Daniel
es wäre trotzdem schön, wenn gerade du die Quelle deiner Inspiration nennen würdest.
du betonst ja selber immer wieder, wie wichtig das ist und solltest dann auch mit gutem Beispiel vorangehen.
das gilt ja sicherlich nicht nur für Formeln, sondern auch für VBA-Methoden.
Da hast Du eben was nicht verstanden.
28.06.2020 22:10:01
lupo1
"Inspiration" ist das künstlerische Anwenden und Weiterentwickeln von etwas Bestehendem.
Das liegt hier nicht vor. Vielleicht hast Du schon mal vom Konjunktiv gehört?: "Da hätte also nicht erst ich kommen müssen, wenn es so bekannt wäre."
Oft gibt es in Formeln sich wiederholende Passagen. Die schreibe ich immer (wo es geht) bei meinen blauen Forumslösungen untereinander, was sonst auch niemand macht. Bei Konstruktionsmakros weise ich solche Passagen einfach einem Zeichen zu, das ich dann mittels Substitute() in der Formel in die Passagen zurückverwandle. Da keiner weit und breit Konstruktionsmakros schreibt (viel zu anstrengend!), kann ich folgerichtig von niemandem inspiriert sein. Das Schöne: Formelzuweisungen sind Strings in VBA, genauso wie Range-Definitionen.
Das mit dem Zwischenspeichern von Formel-Passagen wurde durch Laurent Longré in seiner MOREFUNC.DLL versucht, und zwar direkt für Excel-Formeln mit den Befehlen GET und SET.
Als Konstruktionsmakro bezeichne ich kurze Schnipsel, die mich eine .xlsx-Datei erstellen lassen, statt sie anhängen zu müssen. Ein solches hat meist 1 KB Größe, während ein Jeanie/Bamberg/Ziplies im Forumstext oft schon 6 KB hat, und eine angehängte Datei meist 20 KB oder mehr. Aus dem Jeanie/Bamberg/Ziplies jedoch bekommt man keine Datei (mittlerweile angeblich schon, wenn man sich das Add-In runterlädt), und ein Dateianhang ist immer ein Medienbruch, mit fataler Folge zuletzt im April 2014 bei Office-Lösung.
Anzeige
AW: Da hast Du eben was nicht verstanden.
28.06.2020 22:46:16
Daniel
Ich hab jetzt von dir auch noch nie ein Konstruktionsmakro gesehen.
Aber warum sollte ich welche Schreiben?
Die Dateivorlage liefert der Fragesteller und der muss kein Konsrtuktionsmakro schreiben, weil er die Datei ja konkret vorliegen hat (meistens kann er es auch gar nicht)
Was einem Konstruktionsmakro vielleicht am ähnlichsten ist sind VBA-Lösungen, die zur Berechnung Formeln in die Tabelle einfügen und deren Ergebnisse weiterverarbeiten.
Sowas stelle ich regelmäßig und schon seit längerem hier vor (z.B Löschen von Zeilen mit Bedingung).
Da in den meisten Fällen die enzufügende Variable die Zeilennummer der aktiven Zelle ist, kann man diese Aufgabe wesentlich eleganter mit Hilfe der R1C1-Adressierungsart lösen.
Gruß Daniel
Anzeige
Ich habe "Konstruktionsmakro" bei OL gesucht, ...
29.06.2020 06:46:50
lupo1
... und mehrere Einträge von mir gefunden. Gibt es auch in anderen Foren.
Kann sein, dass ich sie am Anfang noch nicht so genannt habe. Die fallen dann unter den Tisch.
Ein weiterer Vorteil: Wer ein Konstruktionsmakro schrittweise ablaufen lässt, kann (nicht muss) auch gleich etwas über die Logik der Datei lernen.
Allerdings fasse ich manche Schritte, die nicht die Berechnungsreihenfolge darstellen müssen, auch mal zusammen, damit das Makro weniger Zeichen hat.
R1C1-Schreibweise hat (neben vielen anderen Vorteilen) den Vorteil, dass auf .FormulaR1C1 bei der Zuweisung verzichtet werden kann.
Anzeige
Diesen Satz habe ich noch nicht verstanden
29.06.2020 07:17:08
Daniel
"R1C1-Schreibweise hat (neben vielen anderen Vorteilen) den Vorteil, dass auf .FormulaR1C1 bei der Zuweisung verzichtet werden kann"
Kannst du mir den noch bitte mal erläutern?
Oder hast du da was anderes gemeint?
Gruß Daniel
.FormulaR1C1 ist die Standard-Eigenschaft ...
29.06.2020 08:52:13
lupo1
... und muss somit nicht genannt werden:
[B2] = "=R[-1]C+RC[-1]"
Aber Obacht! Auch normale Formeln können dadurch interpretiert werden:
[B2] = "=RC1+1" wird z.B. als Zelle RC1+1 interpretiert, nicht als B$1+1, wie beabsichtigt.
Um trotzdem zweifelsfrei in der R1C1-Schreibweise bleiben zu können, nimmt man dann "=R[0]C1+1" und spart sich .FormulaR1C1 und bleibt trotzdem eindeutig.
Alles immer aus Sicht von Konstruktionsmakros.
Anzeige
Beispiel war falsch
29.06.2020 08:55:39
lupo1
Es geht um den Bezug auf $A2, nicht B$1.
AW: .FormulaR1C1 ist die Standard-Eigenschaft ...
29.06.2020 09:58:17
Daniel
Hi
A1-Adressen funktionieren hier aber genauso (Excel 2016)
R1C1 ist also nicht Standard, sondern Excel kann mittlerweile auch bei Zellformeln erkennen, welche Schreibweise gemeint ist (bei Formeln für die bedingte Formatierung funktionert das ja schon länger)
allerdings sind für mich jetzt ein paar Zeichen weniger nicht der ausschlaggebende Mehrwert.
Gruß Daniel
Nochmal
29.06.2020 10:23:23
lupo1
1) Ich habe doch geschrieben, dass die A1-Schreibweise genauso angenommen wird
2) [B2] = "=A2" könnte ja auch einen .Value ergeben (String). VBA erkennt aber richtig eine Formel. Ein .Value würde es vermutlich mit [B2] = "'=A2". Somit erspart mir VBA, öfters Eigenschaften zu nennen.
Anzeige
AW: Nochmal
29.06.2020 10:28:21
Daniel
definiere bitte "FormularR1C1 ist die Standardeigenschaft"
das war deine Überschrift!
Von Formularen (Access?) spricht keiner ...
29.06.2020 11:05:54
lupo1
... aber Du hast insofern recht, als dass ohne Eigenschaft nicht nur .FormulaR1C1 gedeutet wird, sondern auch die normale .Formula.
Letztere sogar vorrangig, so dass bei "=RC1" ein Bezug des A1-Systems angenommen wird, wenn ansonsten in der Formel keine Klarstellung für das R1C1-System ist, wie bspw. bei "=RC1+R1C".
Allerdings müssen Matrixformeln mit .FormulaArray definiert werden.
AW: Nochmal
29.06.2020 10:35:44
Daniel
dann ist FormulaR1C1 nicht die Standard- bzw Default-Eigenschaft.
mit [B2].FormulaR1C1 = "=A2" bekommst du in der Zelle den #Name-Fehler
mit [B2] = "=A2" nicht, daher kann .FormulaR1C1 nicht die Standard- oder Default-Eigenschaft sein, sondern es muss eine andere Eigenschaft Verwendung finden (in der Regel ist das ja .Value)
Anzeige
"Aber warum sollte ich welche schreiben?"
29.06.2020 06:59:02
lupo1
Genau das ist der Grund. Keiner schreibt sie, weil sie nur viel Aufwand ergeben (oft 15 Minuten statt 2). Je öfter man das aber tut, desto leichter fällt es.
Die Datei eines Fragers hat mich für allgemeine Feststellungen bisher immer nur als Problemformulierung interessiert. Das K-Makro erzeugt immer eine eigene andere Datei, mit suffizientem Beispiel, was ein Frager oft nicht liefert, und mit dem Weglassen von unnötigen oder dem Hinzufügen von illustrativen informationen.
AW: DAS ZWEITE BUCH SAMUEL. :-)
28.06.2020 12:54:56
GerdL
Natans Eingreifen: 12,1–15a
Wer hat hier wessen 'kleine heile Welt' ...
30.06.2020 00:49:25
Luc:?
…brutal und egoistisch zerstört und muss deshalb von Nathan-Gerd ermahnt wdn? Und wer führt, falls derjenige keine Reue zeigt, dann die Bestrafung durch? Wer ist hier folglich JHWH…‽ ;-]
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Diagramm dynamischer Bereich
27.06.2020 22:18:01
Daniel
Hi
muss es VBA sein?
sowas könnte man auch über Dynamische Namen (berechnete Zellbereiche) ohne VBA realisieren.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige