Diagramm variabel gestalten

12/01/2009 - 06:58 von Stephan Häussler | Report spam
Guten morgen,

ich habe ein Excelblatt, welches in Spalte A fortlaufend Datumswerte
beinhaltet und in Spalte B die dazugehörenden Werte.
Nun möchte ich in einem weiteren Blatt dieser Mappe ein "Datum von" und ein
"Datum bis" abfragen, wodurch mir das auf diesem Blatt liegende
Liniendiagramm jeweils auf den ausgewàhlten Zeitraum angepaßt wird.

Geht das und wenn ja wie ?

Gruß

S. Hàussler
 

Lesen sie die antworten

#1 Dimo Tabken
12/01/2009 - 08:02 | Warnen spam
Moinmoin Stephan,

Nun möchte ich in einem weiteren Blatt dieser Mappe ein "Datum von" und ein
"Datum bis" abfragen, wodurch mir das auf diesem Blatt liegende
Liniendiagramm jeweils auf den ausgewàhlten Zeitraum angepaßt wird.

Geht das und wenn ja wie ?



wenn Du im VBA-Editor die folgende Prozedur einfügst (und die Zelladressen
noch anpaßt), dann sollte das Gewünschte passieren:


Private Sub Worksheet_Change(ByVal Target As Range)

Dim wsChart As Worksheet

'Blattnamen anpassen
Set wsChart = ThisWorkbook.Sheets("Tabelle2")

'Angenommen, die Start- und Enddaten stehen in B1 und B2.
'anderenfalls müssen in den Case Is= ... Zeilen die Zelladressen korrigiert
'werden
Select Case Target.Address
'hat sich das Startdatum geàndert?
Case Is = "$B$1"
'das Diagramm funktioniert nicht, wenn der Minimalwert
'größer ist als der Maximalwert. Deswegen wird
'ein "Dummy-Wert" als Enddatum eingetragen
If Target.Value > Target.Offset(1, 0) Then
Target.Offset(1, 0).Value = Target.Value + 1
End If

'hat sich das Enddatum geàndert?
Case Is = "$B$2"
'wenn irrtümlich ein Wert <Startwert eingetragen wird, mault die Routine
'und bricht ab.
If Target.Value < Target.Offset(-1, 0) Then
varMeldung = MsgBox("Enddatum darf nicht kleiner sein als
Startdatum! Bitte korrigieren!", vbOKOnly & vbCritical, "Fehlerhafte
Datumseingabe")
wsChart.Range("B2").Select
Exit Sub
End If
Case Else
'wenn weder Start- noch Enddatum geàndert werden, braucht das
'Diagramm nicht geàndert zu werden.
Exit Sub
End Select

'nun wird die Achse umformatiert.
wsChart.ChartObjects(1).Activate
With ActiveChart
.Axes(xlCategory).MinimumScale = CLng(wsChart.Range("B1").Value)
.Axes(xlCategory).MaximumScale = CLng(wsChart.Range("B2").Value)
End With

'Fàrtich

End Sub


Gruß, Dimo

Ähnliche fragen