Clever-Excel-Forum

Normale Version: makro Diagramm
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich bin neu hier.

Ich habe angefangen für ein Projekt was zu programmieren einen Makro in VBA. Habe mir dafür ein Muster Makro gesucht ..leider klappt es nicht.

Mein Gedankengang war: Excel öffnen und makro auswählen--> Datei auswählen mit Tabellen.--> Letztes Sheet soll das Diagramm sein. -->Funktion makro: mehrere Sheets mit mit Tabellen.--> es sollen immer spalten A und E in das Diagramm, diese sind variabel... Alles aber in ein Diagramm.

Kann mir jemand bitte Tipps bzw. eine Verbesserung geben. Bekomme das mit der Programmierung für die mehreren Sheets nicht ihn

Danke.

Sub DiagrammErstellen()
 Dim i, lastrow, X, Y, spalten, cht, l, r, datei
 datei = Application.GetOpenFilename()
 If datei = False Then Exit Sub
 Workbooks.Open datei
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row

 X = "A2:A" & lastrow
 Y = "F2:F" & lastrow

 ActiveSheet.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
neuname = InputBox("Diagramm")
ActiveSheet.Name = Diagramm
 cht.Chart.ChartType = xlXYScatter
 cht.Chart.SetSourceData Source:=Sheets(*).Range(X & "," & Y)
 cht.Chart.SeriesCollection(1).Name = "='" & ActiveSheet.Name & "'!$" & spalten(i) & "$1"


 cht.Width = 180   'Breite des Diagramms
 cht.Height = 150  'Höhe
 If i Mod 2 = 0 Then
 cht.Left = Range("O2").Left 'O2 linke obere Ecke der Diagramme aus Spalte B/F/G
 cht.Top = Range("O2").Offset(l * 14, 0).Top
 l = l + 1
 Else
 cht.Left = Range("S2").Left 'S2 linke obere Ecke der Diagramme aus Spalte C/G/K
 cht.Top = Range("S2").Offset(r * 14, 0).Top
 r = r + 1
 End If
  'ActiveWorkbook.Close True
 End Sub



Danke. :20:
Er würde mir reichen, wenn er aus dem Anderen sheets nur die F Tabelle nimmt
Hier als Beispiel für 3..Benötige aber Vaiable anzahl von Sheets und von Zeilen.

Sub Diagramm2()
'
' Diagramm2 Makro
'
'
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterLines
    ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("F1:F161")
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=""Force2"""
    ActiveChart.SeriesCollection(2).XValues = "='Sheet1 (2)'!$A$2:$A$161"
    ActiveChart.SeriesCollection(2).Values = "='Sheet1 (2)'!$F$2:$F$161"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(3).Name = "=""Force3"""
    ActiveChart.SeriesCollection(3).XValues = "='Sheet1 (3)'!$A$2:$A$161"
    ActiveChart.SeriesCollection(3).Values = "='Sheet1 (3)'!$F$2:$F$161"
End Sub
Ich würde es mit einer Schleife über alle Sheets (ohne das Diagramm-Sheet) und über eine Variable, die die letzte belegte Zeile in F ermittelt, lösen. Den zweiten Punkt hast Du ja schon im ersten Makro mit dem "lastrow".