Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Diagramm mit vba erstellen


Betrifft: Diagramm mit vba erstellen von: Lutz
Geschrieben am: 02.10.2019 14:13:45

Hallo, ich versuche mittels VBA ein Diagramm zu generieren und komme nicht weiter. Wenn ich das mit dem Macrorecorder aufnehmen, dann ist das OK, aber wenn ich den Code nach vba kopiere läuft nicht mehr viel. Eigentlich ist meine Aufgabe ganz einfach: Ich habe eine Spalte A mit Datumswerten und eine Spalte B mit Messwerten. In der jeweils ersten Zeile steht die Spaltenüberschrift. Ich möchte nun ein Diagramm erstellen, in dem auf der x-Achse die Datumswerte sind und in dem auf der y-Achse die Messwerte sind. Nach längerer Suche habe ich einen Code gefunden, der vielversprechend aussieht, aber nicht zum Laufen zu kriegen ist. Vielleicht hat jemand hier im Forum eine Idee. Der Code lautet:

diagramm.SetSourceData Worksheet("Tabelle4").Range("Tabelle4!$A:$A;Tabelle4!$B:$B")

Besten Dank für die Hilfe.

  

Betrifft: Was ist der Grund für VBA ? (owT) von: EtoPHG
Geschrieben am: 02.10.2019 14:23:58




  

Betrifft: AW: Diagramm mit vba erstellen von: Daniel
Geschrieben am: 02.10.2019 14:41:27

Hi
Diagramme vollständig mit VBA zu generieren, ist ziemlich aufwendig und komplex.
einfacher ist es ggf, das Diagramm normal von Hand zu erstellen und dann nur noch wirklich notwendigen Anpassungen per Code durchzuführen.
Gruß Daniel


  

Betrifft: AW: Diagramm mit vba erstellen von: Philipp
Geschrieben am: 02.10.2019 14:45:58

Hi Daniel,

hier mal "quick and dirty":

ActiveSheet.Shapes.AddChart2(227, xlLineStacked).Select
ActiveChart.SetSourceData Source:=Range("'" & ActiveSheet.Name & "'!$A$1:$B$" & Range("B1").End(xlDown).Row)

Viele Grüße,
Philipp


  

Betrifft: ...und was soll Daniel damit? (owT) von: EtoPHG
Geschrieben am: 02.10.2019 14:55:48




  

Betrifft: AW: Diagramm mit vba erstellen von: Philipp
Geschrieben am: 02.10.2019 16:08:06

Hallo Lutz,

sollte eigentlich direkt an Dich, nicht an Daniel... (wer lesen kann...)

Hier mal "quick and dirty":

ActiveSheet.Shapes.AddChart2(227, xlLineStacked).Select
ActiveChart.SetSourceData Source:=Range("'" & ActiveSheet.Name & "'!$A$1:$B$" & Range("B1").End(xlDown).Row)

Viele Grüße,
Philipp


  

Betrifft: AW: Diagramm mit vba erstellen von: Beverly
Geschrieben am: 03.10.2019 13:55:43

Hi Lutz,

das kannst du ganz einfach so realisieren:

Sub DiaErstellen()
    Dim lngLetzte As Long
    Dim diagramm As Chart
    With Worksheets("Tabelle4")
        lngLetzte = .Range("A1").End(xlDown).Row
        Set diagramm = .ChartObjects.Add(50, 50, 250, 150).Chart
        diagramm.ChartType = xlXYScatterLines  '<== gewünschten Typ anpassen
        diagramm.SetSourceData Source:=.Range(.Cells(1, 1), Cells(lngLetzte, 2))
    End With
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Diagramm mit vba erstellen von: Beverly
Geschrieben am: 03.10.2019 13:56:07

Hi Lutz,

das kannst du ganz einfach so realisieren:

Sub DiaErstellen()
    Dim lngLetzte As Long
    Dim diagramm As Chart
    With Worksheets("Tabelle4")
        lngLetzte = .Range("A1").End(xlDown).Row
        Set diagramm = .ChartObjects.Add(50, 50, 250, 150).Chart
        diagramm.ChartType = xlXYScatterLines  '<== gewünschten Typ anpassen
        diagramm.SetSourceData Source:=.Range(.Cells(1, 1), Cells(lngLetzte, 2))
    End With
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Diagramm mit vba erstellen von: Lutz
Geschrieben am: 07.10.2019 08:40:00

Hallo, vielen Dank an die Forumsteilnehmer, die mir auf meine Anfrage geantwortet haben. Da ich über das lange Wochenende im Kurzurlaub war, kann ich erst heute antworten. Also sorry, wenn ich nicht zeitnah geantwortet habe. Philipp's Lösung läuft und bei Karin bekomme ich im Diagramm nur einen Messwert angezeigt, das liegt (so vermute ich) an der Variablen lngLetzte, die nur den Wert 2 annimmt und nicht alle Messwertzeilen. Zu Philipp's Lösung hätte ich noch eine Frage: Kann man die Spalte B allgemeiner halten. Die Spalte A beinhaltet immer die Datumsdaten und diese ist für alle Diagramme gleich, nur meine jetzige B-Spalte kann auch mal C, D, ... sein, da ich mehrere Messspalten habe.
Ich habe versucht den Code umzustellen, aber das klappt nicht: diagramm.SetSourceData Source:=Range("'" & ActiveSheet.Name & "'!$A$1:$(column(i)$" & Range((cells(1,i)).End(xlDown).Row). Was ist hier falsch. Im voraus schon einmal Danke für die Antworten. Gruß Lutz


  

Betrifft: AW: Diagramm mit vba erstellen von: Beverly
Geschrieben am: 07.10.2019 08:54:15

Hi Lutz,

ich weiß ja nicht wie deine Mappe aussieht, aber bei mir läuft der Code problemlos. Wenn die Variable lngLetzte 2 anzeigt, dann ist bei dir Spalte A leer.

https://www.herber.de/bbs/user/132367.xlsm


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Diagramm mit vba erstellen von: Lutz
Geschrieben am: 07.10.2019 10:11:04

Hallo Karin,

ja Du hast recht. Bei meiner Tabelle ist mir in der ersten Spalte (A1) die Spaltenüberschrift "abhanden" gekommen (Zeile war leer)und deshalb lief es bei mir nicht. Sorry.
Hättest Du noch eine Idee, wie ich verschiedene Spalten auswählen kann. In Deinem Code ist der Bereich von cells(1,1) bis cells(lngLetzte,2) ausgewählt, um das Diagramm zu zeichnen. Ginge auch, dass ich Spalte A mit einer beliebigen Spalten z.B. D kombiniere, sprich einzelne Spalten auswähle und keinen "nebeneinander" liegenden Bereich?


  

Betrifft: AW: Diagramm mit vba erstellen von: Beverly
Geschrieben am: 07.10.2019 10:29:49

Hi Lutz,

gewiss lässt sich das realisieren - es fragt sich nur: WIE soll die Spalte ausgewählt werden? Mal als Beispiel mit einer InputBox, in die der Spaltenbuchstabe (für die Spalte mit den Y-Werten) eingetragen werden kann:

Sub DiaErstellen()
    Dim lngLetzte As Long
    Dim diagramm As Chart
    Dim varSpalte As Variant
    Dim rngBereich As Range
    varSpalte = Application.InputBox("Bitte Spaltenbuchstabe eintragen", _
        "Spaltenauswahl", , , , , , 2)
    If Not IsNumeric(varSpalte) Then
        With Worksheets("Tabelle4")
            lngLetzte = .Range("A1").End(xlDown).Row
            Set rngBereich = Union(.Range(.Cells(1, 1), .Cells(lngLetzte, 1)), _
                .Range(.Cells(1, varSpalte), .Cells(lngLetzte, varSpalte)))
            Set diagramm = .ChartObjects.Add(50, 50, 250, 150).Chart
            diagramm.ChartType = xlXYScatterLines  '<== gewünschten Typ anpassen
            diagramm.SetSourceData Source:=rngBereich
        End With
    End If
End Sub

GrußformelBeverly's Excel - Inn


Beiträge aus dem Excel-Forum zum Thema "Diagramm mit vba erstellen"