Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
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
dynamisches 3D-Diagramm
07.05.2020 11:59:11
AL
Hallo zusammen,
ich habe ein 3D-Diagramm mit einer x,y Ebene auf dem ich die z-Koordinaten darstellen möchte. Die x,y Ebene ist dynamisch, d.h. sie kann größer oder kleiner werden. Ich hatte mir überlegt den Darstellungsbereich der x,y Ebene groß zu wählen und mit der Funktion NV() die Bereiche ausblenden zu lassen, wenn x,y kleiner wird. Leider wird bei 3D Diagrammen die NV() stellen trotzdem angezeigt (siehe Beispielmappe).
Bei Liniendiagrammen kann man mit der Funktion INDIREKT im Namenmanager sich eine dynamische Achse basteln und diese im Diagramm zu implementieren. Leider sehe ich bei 3D Diagrammen diese Möglichkeit nicht.
Hat jemand eine Idee, wie man das trotzdem (mit oder ohne VBA) bewerkstelligen kann?
Ich bin für jede Hilfe dankbar.
Grüße
AL
https:\/\/www.herber.de/bbs/user/137340.xlsx

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

Betreff
Datum
Anwender
Anzeige
AW: nachgefragt ...
07.05.2020 15:11:16
neopa
Hallo AL,
... wie würde denn Deine Darstellung aussehen, wenn Du nur, den Datenbereich C4:H14 darstellen würdest. Stell doch dies zunächst hier ein.
Gruß Werner
.. , - ...
AW: dynamisches 3D-Diagramm
07.05.2020 15:32:41
Beverly
Hi,
da du sowohl die Länge der Datenreihen als auch deren Anzahl dynamisch gestalten willst wirst du um VBA nicht herumkommen.
Sub DiaDynamisch()
Dim lngZeile As Long
Dim intSpalte As Integer
intSpalte = Application.Count(Rows(3)) + 2
lngZeile = Application.Count(Columns(2)) + 3
With ActiveSheet.ChartObjects(1).Chart
.SetSourceData Source:=Range("$B$3:" & Cells(lngZeile, intSpalte).Address)
End With
End Sub
Im Code wird davon ausgegangen, dass es keine leeren Zellen in Zeile 3 und Spalte B gibt.

GrußformelBeverly's Excel - Inn
Anzeige
AW: dynamisches 3D-Diagramm
07.05.2020 16:01:30
AL
Hallo Beverly,
das klappt schon mal super. Leere Zeilen/Spalten wird es zwischen den Werten des Diagramms nicht geben, nur #NV 's.
Kannst du mir noch einen Tipp geben wie ich den Code ergänzen kann, wenn das Diagramm nicht auf demselben Tabellenblatt wie die Werte ist. Zum besseren Verständnis, meine Werte habe ich auf dem Tabellenblatt "1_mxd+" und das Diagramm soll auf dem Tabellenblatt "PBew_Druck" vorhanden sein.
Besten Dank.
G
AW: dynamisches 3D-Diagramm
07.05.2020 16:20:03
Beverly
Hi,
man muss nur an den betreffenden stellen den Bezug zum richtigen Tabellenblatt ergänzen:
Sub DiaDynamisch()
Dim lngZeile As Long
Dim intSpalte As Integer
With Worksheets("1_mxd+")
intSpalte = Application.Count(.Rows(3)) + 2
lngZeile = Application.Count(.Columns(2)) + 3
End With
With Worksheets("PBew_Druck").ChartObjects(1).Chart
.SetSourceData Source:=Worksheets("1_mxd+").Range("$B$3:" & _
Cells(lngZeile, intSpalte).Address)
End With
End Sub

GrußformelBeverly's Excel - Inn
Anzeige
AW: dynamisches 3D-Diagramm
07.05.2020 18:17:56
AL
Hallo Beverly,
besten Dank erstmal. Wie es aussieht, muss ich auf dem Tabellenblatt (TB) PBew_Druck mehrere 3D Diagramme anzeigen lassen. Auch bei diesen Diagrammen werden die Werte auf einem anderen TB sein.
Ich hätte deinen Code für jedes Diagramm kopiert und die entsprechenden Namen der TB angepasst. Ich frage mich jedoch, wie die Makros die ChartObjects unterscheiden sollen. Kann man statt der (1) fortlaufende Nummern verwenden?
Schönen Feierabend.
AL
VBA mehrere dynamische Diagramme
07.05.2020 19:14:07
Beverly
Hi,
man kann ein Diagramm direkt mit Namen ansprechen, also .ChartObjects("MeinDiagramm") oder mit seinem Index - so wie im geposteten Code, wobei dieser Index davon abhängt, in welcher Reihenfolge die Diagramme erstellt wurden.
Man könnte die Diagramme auch in einer Schleife ansprechen, sodass du nicht für jedes Diagramm ein eigenes Makro benötigst - dazu müsste ich aber genaueres über den Aufbau deiner Mappe wissen, also wo sich die Datenquelle zu jedem Diagramm befindet. Am besten lädst du die Mappe mit den 3 Diagrammen hoch.

GrußformelBeverly's Excel - Inn
Anzeige
AW: @Beverly
08.05.2020 16:37:15
AL
Hallo Beverly,
anbei findest du die 3D Diagramme. Ich habe es mit deinem Code versucht, allerdings wird das Diagramm verschoben. Zum Verständnis: auf den beiden Tabellenblättern PBew_Druck & _Zug ist jeweils noch ein Diagramm enthalten.
Ich habe deinen Code in einem Modul eingebunden, das mehrere Funktionen Subs nacheinander ausführt.
Anbei der Code für ein Diagramm auf dem Blatt PBew_Druck, den ich umgeschrieben habe:
Sub DiaDynamisch()
Dim lngZeile As Long
Dim intSpalte As Integer
With Worksheets("1_mxd+")
intSpalte = Application.Count(Rows(5)) + 3
lngZeile = Application.Count(Columns(3)) + 4
End With
With Worksheets("PBew_Druck").ChartObjects(2).Chart
.SetSourceData Source:=Worksheets("1_mxd+").Range("$C$5:" & Cells(lngZeile, intSpalte). _
Address)
End With
End Sub
Hast du eine Idee, was ich falsch gemacht haben könnte?
https:\/\/www.herber.de/bbs/user/137370.xlsx
Anzeige
Lösungsvorschlag mit Schleife
08.05.2020 17:19:19
Beverly
Hi,
Sub DiasBearbeiten()
Dim strFormel As String
Dim strX As String
Dim strY As String
Dim lngZeile As Long
Dim intSpalte As Integer
Dim intDia As Integer
Dim strTab As String
For intDia = 1 To Worksheets("PBew_Druck").ChartObjects.Count
With Worksheets("PBew_Druck").ChartObjects(intDia).Chart
strFormel = .SeriesCollection(1).Formula
strX = Split(strFormel, ",")(2)
strY = Split(strFormel, ",")(1)
strTab = Left(strY, InStr(strY, "!") - 1)
strTab = Application.Substitute(strTab, "'", "")
With Worksheets(strTab)
intSpalte = Application.Count(.Rows(5)) + 3
lngZeile = Application.Count(.Columns(5)) + 4
End With
.SetSourceData Source:=Worksheets(strTab).Range("$C$5:" & _
Cells(lngZeile, intSpalte).Address)
End With
Next intDia
End Sub

Analog für das andere Tabellenblatt.

GrußformelBeverly's Excel - Inn
Anzeige
AW: Lösungsvorschlag mit Schleife
08.05.2020 18:05:57
AL
Hallo Beverly,
danke dir für die schnelle Antwort.
Nach dem Einfügen und Ausführen deines Codes hat es geklappt. Allerdings wenn ich ein größeres Feld wähle ( damit ist gemeint, dass die Eckwerte variieren ), dann kommt ein Laufzeitfehler '5' : ungültiger Prozeduraufruf oder ungültiges Argument. Die Zeile mit dem Ausdruck strTab = Left(strY, InStr(strY, "!") - 1) wird hervorgehoben. Hast du eine Idee was ich falsch gemacht haben könnte?
Zum Verständnis: Wofür stehen die beiden +3 und +4 hinter den Variablen für Spalte und Zeile?
Grüße
AW: Lösungsvorschlag mit Schleife
08.05.2020 18:19:22
AL
… seltsam, bei der Beispielmappe klappt es, aber integriert in meinem Makro bekomme ich Probleme. :/
Anzeige
AW: Lösungsvorschlag mit Schleife
08.05.2020 18:42:59
Beverly
Hi,
ändere diese beiden Zeilen (strY und strX austauschen):
            strY = Split(strFormel, ",")(2)
strX = Split(strFormel, ",")(1)

GrußformelBeverly's Excel - Inn
AW:@Beverly Besten Dank!
08.05.2020 18:51:46
AL
… auf dem Tabellenblatt, auf dem die Diagramme enthalten sind, kann das erste Diagramm bzw. die Spalten ausgeblendet werden. Ich habe dein Code in der Form geändert, dass nur die Diagramm nach diesem angesprochen werden.
Jetzt klappt alles super.
Vielen Dank nochmal und ein schönes Wochenende.
AL
Anzeige

133 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige