AW: Variable Darstellung von X-Y Diagrammen
29.07.2011 11:05:38
X-Y
Hi Dominik,
lösche im mdlAllgemein die Zeile
Worksheets("Tabelle4").Columns.Hidden = False
und ändere den Code im Codemodul des UserForms
Private Sub UserForm_Initialize()
Dim intReihe As Integer
Dim intZaehler As Integer
Dim arrSpalten()
Dim chrDia As Chart
Dim strSpalte1 As String
Dim strSpalte2 As String
Set chrDia = Charts("Diagramm")
ReDim arrBox(1 To chrDia.SeriesCollection.Count)
For intReihe = 1 To chrDia.SeriesCollection.Count
strSpalte1 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(2)).Cells(1). _
Address(True, False)
strSpalte1 = Left(strSpalte1, InStr(strSpalte1, "$") - 1)
strSpalte2 = Range(Split(chrDia.SeriesCollection(intReihe).Formula, ",")(1)).Cells(1). _
Address(True, False)
strSpalte2 = Left(strSpalte2, InStr(strSpalte2, "$") - 1)
Set clSchalter = Me.Controls.Add("Forms.CheckBox.1", "Box" & intReihe, True)
With clSchalter
.Tag = strSpalte1 & ":" & strSpalte2
.Caption = Range(Application.Substitute(Split(Split(chrDia.SeriesCollection(intReihe). _
Formula, ",")(0), "(")(1), """", "")).Value
.Top = intReihe * 20
.Height = 15
.Left = 25
.Width = 180
.Value = True
ReDim Preserve arrSpalten(0 To intZaehler)
arrSpalten(intZaehler) = .Tag
intZaehler = intZaehler + 1
End With
Set arrBox(intReihe).clBox = clSchalter
Next intReihe
For intReihe = 0 To UBound(arrSpalten())
Worksheets("Tabelle4").Columns(arrSpalten(intReihe)).Hidden = True
Next intReihe
End Sub
Innerhalb der With-Anweisung werden zuerst die beiden Spalten, auf denen die Datenreihe basiert, in die Tag-Eigenschaft der CheckBox geschrieben, damit sie dann im Klassenmodul abgerufen werden konnen. Dann wird die Aufschrift der CheckBox aus dem Namen der Datenreihe erstellt. Die Eigenschaften .Top, .Height, .Left, .Width geben die Position der Oberkante, die Höhe, die Position der linken Kante und die Breite der CheckBox an. Außerdem wird die .Value-Eigenschaft auf True - d.h. aktiviert - gesetzt.
Die restlichen 3 Zeilen sind dazu da, um die auszublendenden Spalten in ein Array zu schreiben, welches dann in der For intReihe Schleife benutzt wird, um im Tabellenblatt die betreffenden Spalten auszublenden, sodass ein leeres Diagramm angezeigt wird.
Bis später,
Karin