Guten Tag,
ich habe mir in VBA für Excel eine Funktion geschreiben, die mir Diagramme erstellt. Da ich jetzt aber verschiede Diagramme erstellen muss mit einem Userformular will ich gerne die Funktion so allgemein schreiben, das ich in einem Sub für einen Button nur noch die Varablen definieren muss und so nicht jedes mal neu die Funktion für Diagramm erstellen schreiben muss.
Dim startm As Integer
Dim endm As Integer
Dim startf As Integer
Dim endf As Integer
Dim Path As String
'Momentan habe ich es darüber gelöst, aber ich bin mir nicht sicher ob das der richtige Weg ist.
Public Function DiaErstellen()
Dim chDiagramm As ChartObject
If CBM.Value = True Then
If CoBvonMann.ListIndex = -1 Then Exit Function
If CoBbisMann.ListIndex = -1 Then Exit Function
End If
If CBF.Value = True Then
If CoBvonFrau.ListIndex = -1 Then Exit Function
If CoBbisFrau.ListIndex = -1 Then Exit Function
End If
'Ich habe mehrere Checkboxen, mit den ich auswähle welche Datenreihen dargestellt werden sollen und dass der Datenbereich (also der Zeitraum in meinem Beispiel) verändert werden kann
Set chDiagramm = ActiveSheet.ChartObjects.Add(50, 100, 500, 350)
chDiagramm.Chart.ChartType = xlXYScatterLines
chDiagramm.Name = "Einwohner"
'Allgemeine Daten über das Diagramm
If CBM.Value = True Then
If CoBvonMann.ListIndex = -1 Then Exit Function
With chDiagramm.Chart.SeriesCollection.NewSeries
.XValues = "=Tabelle1!A" + CStr(startm) + ":A" + CStr(endm)
.Values = "=Tabelle1!B" + CStr(startm) + ":B" + CStr(endm)
.Name = "Männer"
End With
End If
'Wenn der Hacken bei Männer gemacht wurde, wird der Datenbereich jewalige Datenbereich dargestellt
If CBF.Value = True Then
Cgetpath_Click
Path = Mid(Path, 1, InStrRev(Path, "\")) & "[" & Mid(Path, InStrRev(Path, "\") + 1, Len(Path) - InStrRev(Path, "\"))
With chDiagramm.Chart.SeriesCollection.NewSeries
.XValues = "='" + Path + "]Tabelle1'!A" + CStr(startf) + ":A" + CStr(endf)
.Values = "='" + Path + "]Tabelle1'!B" + CStr(startf) + ":B" + CStr(endf)
.Name = "Frauen"
End With
End If
'Das selbe bei den Frauen, nur das die Daten für die Frauen in einer anderen Mappe liegen. Ich kann die Daten NICHT in die eigentliche Mappe verschieben und muss deswegen den umweg über eine Path Funktion machen.
Set chDiagramm = Nothing
End Function
Public Sub CErstellen_Click()
'Das ist die eigentliche Funktion für den Button um das Diagramm zu erstellen
startm = CoBvonMann.ListIndex + 2
endm = CoBbisMann.ListIndex + 2
startf = CoBvonFrau.ListIndex + 2
endf = CoBbisFrau.ListIndex + 2
'Das sind Comboboxen in denen das Jahr ausgelesen wird.
DiaErstellen
End Sub
Ich hoffe ihr könnt mir helfen.
Beste Grüße
Hannes
|