Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
652to656
652to656
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
in VBA Diagramm-Daten manipulieren
22.08.2005 08:28:51
Hannes
Hallo Leute.
Ich habe folgendes Problem:
Ich habe ein Diagramm, in dem Daten angezeigt werden. In diesen Daten kommt auch ein Datum vor (Spalte "A"). Auf der gleichen Seite, auf der das Diagramm eingebettet ist, sind auch 2 "spin-buttons/Drehfelder", mit denen das Anfangs- und Enddatum verändert werden soll.
Die Datumsberechnung geht schon:

Private Sub SpinButton1_Change()
ActiveSheet.Range("RstartDate").Value = ActiveSheet.Range("originalStartDate").Value + SpinButton1.Value
' // TODO
End Sub

Wenn nun die Datenquelle des Diagramms "=Beispiel!$B$6:$G$12" ist, wie kann ich die Zeilen, deren Datum nicht zwischen eingestelltem Start und Ende liegt, am geschicktesten ausblenden?
Geht das geschickter als mit
[pseudocode]
for each zeile in selection
if datum end
deselect zeile
end for
[/pseudocode]
Danke schon mal,
Hannes

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in VBA Diagramm-Daten manipulieren
22.08.2005 10:12:43
Hannes
Derzeitiger Versuchsstatus:

Private Sub SpinButton1_Change()
ActiveSheet.Range("RstartDate").Value = ActiveSheet.Range("originalStartDate").Value + SpinButton1.Value
Dim strDataSheetName As String
strDataSheetName = Worksheets("Report").Range("dataSheetName")
Sheets(strDataSheetName).Activate
ActiveSheet.Names.Add name:="selectedArea", RefersTo:=ActiveSheet.Range(ActiveSheet.Cells(6, 2), ActiveSheet.Cells((ActiveSheet.Range("lastIndex") - 1), 7))
'ActiveSheet.Selection = Nothing
Dim rngSelection As Range
Set rngSelection = ActiveSheet.Range("B6:G6")
For Each rw In ActiveSheet.Range("selectedArea").Rows
this = rw.Cells(1, 1).Offset(0, -1).Value
If this <> "Tag" Then
If this >= Worksheets("Report").Range("RstartDate").Value _
And this <= Worksheets("Report").Range("RendDate").Value Then
rngSelection = Union(rngSelection, ActiveSheet.Range(rw.Cells(1, 1), rw.Cells(1, 1).Offset(0, 6)))
End If
End If
Next rw
rngSelection.Select
Sheets("Report").Activate
'Worksheets("Report").ChartObjects(1).Chart.SetSourceData Source:=Worksheets(strDataSheetName).Selection, _
PlotBy:=xlColumns
End Sub

Effekt: die erste Zeile (Titelzeile der Tabelle) wird gelöscht (häh?), und die Zuweisung der neuen Auswahl zum Diagramm geht auch nicht so wie erwartet. Kann mir jemand helfen?
Hannes
Anzeige
AW: in VBA Diagramm-Daten manipulieren
22.08.2005 10:58:44
Hannes
gelöst.
wenns wen interessiert:

Private Sub SpinButton1_Change()
ActiveSheet.Range("RstartDate").Value = ActiveSheet.Range("originalStartDate").Value + SpinButton1.Value
Dim strDataSheetName As String
strDataSheetName = Worksheets("Report").Range("dataSheetName")
Sheets(strDataSheetName).Names.Add name:="selectedArea", RefersTo:=Sheets(strDataSheetName).Range(Sheets(strDataSheetName).Cells(6, 2), _
Sheets(strDataSheetName).Cells((Sheets(strDataSheetName).Range("lastIndex") - 1), 7))
Dim rngSelection, rngRange2 As Range
Set rngSelection = Sheets(strDataSheetName).Range("B6:G6")
For Each rw In Sheets(strDataSheetName).Range("selectedArea").Rows
this = rw.Cells(1, 1).Offset(0, -1).Value
If this <> "Tag" Then
If this >= Worksheets("Report").Range("RstartDate").Value _
And this <= Worksheets("Report").Range("RendDate").Value Then
Set rngRange2 = Sheets(strDataSheetName).Range(rw.Cells(1, 1), rw.Cells(1, 1).Offset(0, 5))
Set rngSelection = Union(rngSelection, rngRange2)
End If
End If
Next rw
Worksheets("Report").ChartObjects(1).Chart.SetSourceData Source:=rngSelection, _
PlotBy:=xlColumns
End Sub

Anzeige
AW: in VBA Diagramm-Daten manipulieren
22.08.2005 10:19:25
Ralf
Hi Hannes,
folgender Vorschlag von mir:

Sub diagramm()
Dim sBlatt As String, c As Shape, Beginn$, Ende$
Dim Zelle, Bereich$
Bereich = "A1:F5" 'als Beispiel... mußt Du Deinen Gegebenheiten anpassen
For Each Zelle In Range(Bereich)
if Zelle.value = spinbutton1.value then beginn = zelle.address
if zelle.value = spinbutton2.value then ende = zelle.address
next
sBlatt = ActiveSheet.Name
For Each c In Sheets(sBlatt).Shapes
c.Delete
Next
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets(sBlatt).Range(Beginn & ":" & ende), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:=sBlatt
End Sub

Ciao, Ralf
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige