Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
736to740
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
736to740
736to740
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Grafik automatisieren (VBA-special)

Grafik automatisieren (VBA-special)
28.02.2006 17:14:55
cornelis
liebes Exceluniversum,
anbei eine Beispieldatei.
Ich möchte in 3 Listenfelder ein Anfangs-, Enddatum und einen Bereich auswählen. Die Grafik daneben soll genau die Grafik darstellen, die von Anfangs bis Enddatum verläuft und soll zwei Grafiken des definierten Bereichs liefern. Last not least darf auch gerne die Y-Achse sich nach einem dynamischen minimum Wert anpassen. Hat jemand vielleicht eine Minute übrig und hilft mir dabei?
Meine datei findet ihr unter:
https://www.herber.de/bbs/user/31512.xls

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

Betreff
Datum
Anwender
Anzeige
AW: Grafik automatisieren (VBA-special)
28.02.2006 19:06:16
Herbert
hallo cornelis,
probier einmal:


Option Explicit
'in ein Standardmodul
Public Sub DatenBereich()
Dim i%, lz%, ezDr%, lzDr%, sp1$, sp2$
Dim sh As Worksheet, xv, minW1!, minW2!, minW!, yv1, yv2
Set sh = Sheets("Datenblatt")
lz = sh.Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Tabelle1")
   .Unprotect
    For i = 2 To lz
      If sh.Cells(i, 1) = .[a2] Then ezDr = sh.Cells(i, 1).Row
      If sh.Cells(i, 1) = .[a4] Then
          lzDr = sh.Cells(i, 1).Row
          Exit For
       End If
    Next
    
    sp1 = .[a6]
    sp2 = .[a7] 'in A7 steht die Spalte der zweiten Datenreihe
    Set xv = sh.Range("A" & ezDr & ":" "A" & lzDr)
    Set yv1 = sh.Range(sp1 & ezDr & ":" & sp1 & lzDr)
    Set yv2 = sh.Range(sp2 & ezDr & ":" & sp2 & lzDr)
    minW1 = WorksheetFunction.Min(sh.Range(sp1 & ezDr & ":" & sp1 & lzDr))
    minW2 = WorksheetFunction.Min(sh.Range(sp2 & ezDr & ":" & sp2 & lzDr))
    minW1 = minW1 - (minW1 * 3 / 100)
    minW2 = minW2 - (minW2 * 3 / 100)
    If minW1 < minW2 Then
       minW = minW1
    Else
       minW = minW2
    End If
    
    With .ChartObjects(1).Chart
         .SeriesCollection(1).XValues = xv
         .SeriesCollection(1).Values = yv1
         .SeriesCollection(2).Values = yv2
         If minW >= 0 Then
             .Axes(xlValue).MinimumScale = minW
             .Axes(xlValue).CrossesAt = minW
         Else
              .Axes(xlValue).MinimumScaleIsAuto = True
              .Axes(xlValue).CrossesAt = .Axes(xlValue).MinimumScale
         End If
    End With
    .Protect
End With
End Sub
'ins Tabellenmodul
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Or Target.Address = "$A$4" _
   Or Target.Address = "$A$6" Or Target.Address = "$A$7" Then Call DatenBereich
End Sub

     gruß Herbert
Anzeige
AW: Grafik automatisieren (VBA-special)
28.02.2006 22:47:46
Daniel
Hallo,
Problem 1 löst du, in dem du die Grafik in ein X-Y-Diagramm wandelst. Da du sowieso mit Datumswerten arbeitest ist das kein Problem. Jetzt brauchst du nur noch ein kleines Makro, daß bei eine Änderung in Tabelle1 den Anzeigebreich der X-Achse auf die Aktuellen werte setzt (ich habe auch hier ein bischen mit Namen gearbeitet)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("TAb_von") Or Target = Range("TAB_bis") Then
ActiveSheet.ChartObjects("Diagramm 2").Activate
With ActiveChart.Axes(xlCategory)
.MinimumScale = Range("Tab_von").Value
.MaximumScale = Range("TAB_bis").Value
End With
End If
End Sub

Das 2. Problem löst du, ganz ohne Makros, in dem du die Datenquelle der Grafik nicht auf eine deiner Drei Bereiche setzt, sondern auf einen 4. Bereich. Diesen 4. Bereich füllst du dann über die Funktion BEREICH.VERSCHIEBEN mit Daten.
Ist vielleicht jetzt nicht so ganz verständlich, aber ich habe dein Beispiel mal entsprechend umgebaut.
https://www.herber.de/bbs/user/31519.xls
Gruß, Daniel
Anzeige
AW: Grafik automatisieren (VBA-special)
01.03.2006 14:39:32
cornelis
vielen herzlichen Dank,
ihr seid superjungs

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige