Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
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
Inhaltsverzeichnis

Spalten ausblenden: Diagramme anpassen

Spalten ausblenden: Diagramme anpassen
26.08.2015 15:33:31
Esther
Hallo zusammen,
ich weiß nun nicht mehr weiter und hoffe hier auf einen Tritt in die richtige Richtung :)
Im Anhang meine Datei:
https://www.herber.de/bbs/user/99838.xlsm
Und zwar werden auf "Übersicht" eine bestimmte Anzahl an Spalten (D:M) eingeblendet oder ausgeblendet; standardmäßig sind jedoch nie weniger als die Spalten D:I eingeblendet. Das funktioniert über ein Makro. (In meiner Bsp.datei funzt das igwie nicht, aber in der Originaldatei schon!)
Nun sollen die beiden Diagramme, die auf demselben Blatt gaanz oben zu sehen sind, von ihrer Größe her immer gleichmäßig über die eingeblendeten Spalten verteilt werden.
Das heißt: Sind Spalte D:I eingeblendet, sollen die Diagramme so groß sein wie in der Bsp.datei zu sehen. Sind Spalten D:M eingeblendet, sollen sie sich entsprechend GLEICHMÄßIG vergrößern. Hab ich mal als Bildchen in das Dokument eingebunden.
Es geht hier nur um die beiden kleinen Diagramme. Das untere große Diagramm geht ja immer schön mit :)
Klar, ich könnte die drei auch untereinander legen, aber das soll so nicht!!
Ich weiß gar nicht, wo ich anfangen soll. Hat jemand einen heißen Tipp für mich? Ich denke jetzt eher nicht an VBA. Ist bestimmt auf einfacherem Weg zu lösen, oder?
Viele Grüße
Esther

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten ausblenden: Diagramme anpassen
27.08.2015 15:34:14
Matthias
Hallo Esther,
zum Problem dass dein Makro nicht zu funktionieren scheint:
Doch das tut es, es "hinkt" nur immer eine Auswahl hinterher, da es über ein SelectionChange-Event angesteuert wird. Das ist grundsätzlich nicht verkehrt, nur ist es so eingerichtet, dass wenn ich in die Zelle hineinklicke die Aktionen ausgeführt werden. Das Hineinklicken geschieht aber BEVOR ich den Wert ändern kann, sodass der alte Wert für's Spalten ein-/ausblenden genommen wird. Einfache Lösung wäre dies zu einem Change-Event zu ändern. Aktionen werden demnach erst mit der Wertänderung ausgeführt.
Zur Anpassung der Diagramme habe ich mir erlaubt in deinem Code ein paar Zeilen einzufügen. Wenn du den alten und diesen hier vergleichst, wird eine große Erklärung überflüssig. Die Position ist übrigens mittels "zurechtschieben" ermittelt worden. Mir ist leider kein Weg bekannt in dem ich ein Diagramm mit seiner rechten Begrenzung an einer Zelle fixiere, daher per VBA.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Application.Intersect(Tabelle2.[I36], Target) Is Nothing) Then
Application.ScreenUpdating = False
Tabelle1.[D:M].EntireColumn.Hidden = True
If Target.Value > 0 Then
Tabelle1.Columns("D:M").Resize(, Target.Value).EntireColumn.Hidden = False
Select Case Target.Value
Case 6:  Breite = 297 '(603-9)/2
Case 7:  Breite = 327 '663
Case 8:  Breite = 357 '723
Case 9:  Breite = 387 '783
Case 10: Breite = 417 '843
End Select
Tabelle1.Shapes("Diagramm 1").Width = Breite
Tabelle1.Shapes("Diagramm 2").Width = Breite
Tabelle1.Shapes("Diagramm 2").Left = 9.75 + Breite + 9
Tabelle1.Shapes("Diagramm 2").Top = Tabelle1.Shapes("Diagramm 1").Top
End If
End If
Application.ScreenUpdating = True
End Sub
Bitte den Code in Tabelle2(Parameter) damit ersetzen.
lg Matthias

Anzeige
AW: Spalten ausblenden: Diagramme anpassen
28.08.2015 11:03:41
Esther
Danke!! In der Bsp.datei funktioniert das ohne Probleme :)
Jetzt habe ich das Makro in meine Originaldatei eingebaut und etwas verändert, da es nicht nur Case 6 - 10, sondern jetzt Case 5 - 10 gibt.
Bis auf die Größenanpassung des Diagramm 1 funktioniert alles!
Woran könnte das liegen?
Hier mal mein verändertes Makro:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
On Error GoTo ErrExit
Application.EnableEvents = False
If Not Intersect(Target, Range("E40,K40:EX40")) Is Nothing Then
Sheets("AS_aktivitätenbasiert").Range("D14:D3000").ClearContents
End If
If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
Application.ScreenUpdating = False
NeueZeile.[K:EX].EntireColumn.Hidden = True
If Target.Value > 0 Then
NeueZeile.Columns("K:EU").Resize(, Target.Value).EntireColumn.Hidden = False
End If
Range(Cells(40, 11 + Target.Value), Cells(42, "EX")).ClearContents
Application.ScreenUpdating = True
End If
If Not (Application.Intersect(NeueZeile.[I36], Target) Is Nothing) Then
Application.ScreenUpdating = False
Tabelle3.[D:M].EntireColumn.Hidden = True
If Target.Value > 0 Then
Tabelle3.Columns("D:M").Resize(, Target.Value).EntireColumn.Hidden = False
Select Case Target.Value
Case 5:  Breite = 267 '(543-9)/2
Case 6:  Breite = 297 '603
Case 7:  Breite = 327 '663
Case 8:  Breite = 357 '723
Case 9:  Breite = 387 '783
Case 10: Breite = 417 '843
End Select
Tabelle3.Shapes("Diagramm 1").Width = Breite
Tabelle3.Shapes("Diagramm 2").Width = Breite
Tabelle3.Shapes("Diagramm 2").Left = 13.5 + Breite + 9
Tabelle3.Shapes("Diagramm 2").Top = Tabelle3.Shapes("Diagramm 1").Top
End If
End If
Application.ScreenUpdating = True
ErrExit:
Application.EnableEvents = True
End Sub

Schönen Gruß,
Esther

Anzeige
AW: anbei meine Datei mit angepasstem Makro
28.08.2015 13:19:43
Esther
So, hier zur besseren Veranschaulichung meine verfremdete Originaldatei.
Einen Fehler habe ich schon behoben: Diagramm 1 = bei mir Diagramm 7 und Diagramm 2 = bei mir Diagramm 6.
Es muss nur Case 5 hinzugefügt werden. Aber da bin ich überfragt, wie du deine Werte (603 usw.) berechnet hast, wie darauf gekommen bist?
https://www.herber.de/bbs/user/99876.xlsm

AW: anbei meine Datei mit angepasstem Makro
28.08.2015 16:03:13
Matthias
Hallo Esther,
wie bereits geschrieben, habe ich die Position empirisch ermittelt. Einfach das Diagramm 1 genommen und auf die komplette Breite von Spalte B bis N gezogen (spätere Breite von beiden D. + Lücke), dabei Alt gedrückt halten damit die Zellen als Raster wirken. So bin ich die Parameter durchgegangen und habe bei jedem Schritt folgendes Makro ausgeführt:
Sub Test()
MsgBox "D1 Breite: " & Tabelle3.Shapes("Diagramm 1").Width
End Sub
Zahl 603 notiert, nächsten Parameter eingestellt. Nach dem 3. Mal hat sich der Abstand 60 als Schrittweite abgezeichnet. Die "Lücke" 9 habe ich willkürlich festgelegt und den Rest durch 2 geteilt.
Warum das Makro bei deinem Original nicht funktioniert kann ich dir auch sagen: Diagramm 7 und 6 steht zwar schön als Überschrift, aber wenn ich die Diagramme anklicke und "Diagrammtools" -&gt "Layout" schaue steht bei mir "Diagramm 1" bzw. 2 da. Er gibt leider keine Rückmeldung wenn es Diagramm 7 bzw. 6 nicht gibt.
lg Matthias
PS: Kommastellen hab ich meinem Haustier verfüttert.

Anzeige
AW: Diagramm 6 und 7 ;)
28.08.2015 16:48:01
Esther
Ich Dummi, Diagramm 6 und 7 kann es auch nicht geben, weil ich alle anderen aus dem Dokument rausgelöscht habe :D
Naja, ich lass mal dein Makro bzgl. der Diagrammbreite rüberlaufen und hoffe, dass es klappt ;) Wenn nicht, erscheine ich wieder hier. Wenn ja, dann hab vielen Dank (das ja sowieso^^) und ich werde das Thema schließen!
Schönen Gruß
Esther

AW: Diagrammbreite ermittelt, passt aber nicht?
31.08.2015 15:44:03
Esther
So, da bin ich wieder ;)
Habe jetzt die Diagrammbreiten ermittelt und es passt FAST!
Was ich nicht verstehe: Das rechte Diagramm (bei mir wirklich Diagramm 6!) ragt bei 7, 8, 9 oder 10 zu weit über den "Rand" (= Spalte N) hinaus. Das wird also immer ein bisschen zu breit. Bei "6" sind beide Diagramme gleich groß (= 14,96 cm). Das linke Diagramm (= Diagramm 7) verbreitert sich so wie berechnet.
Mir fehlt leider noch das Verständnis zur Problembehebung...
Mein Makro (nur der untere Teil ist jetzt relevant):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
On Error GoTo ErrExit
Application.EnableEvents = False
If Not Intersect(Target, Range("E40,K40:EX40")) Is Nothing Then
Sheets("AS_aktivitätenbasiert").Range("D14:D3000").ClearContents
End If
If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
Application.ScreenUpdating = False
NeueZeile.[K:EX].EntireColumn.Hidden = True
If Target.Value > 0 Then
NeueZeile.Columns("K:EU").Resize(, Target.Value).EntireColumn.Hidden = False
End If
Range(Cells(40, 11 + Target.Value), Cells(42, "EX")).ClearContents
Application.ScreenUpdating = True
End If
If Not (Application.Intersect(NeueZeile.[I36], Target) Is Nothing) Then
Application.ScreenUpdating = False
Tabelle3.[D:M].EntireColumn.Hidden = True
If Target.Value > 0 Then
Tabelle3.Columns("D:M").Resize(, Target.Value).EntireColumn.Hidden = False
Select Case Target.Value
Case 6:  Breite = 423.935 '(856,87-9)/2
Case 7:  Breite = 461.435 '931,87
Case 8:  Breite = 498.935 '1006,87
Case 9:  Breite = 536.435 '1081,87
Case 10: Breite = 573.935 '1156,87
End Select
Tabelle3.Shapes("Diagramm 7").Width = Breite
Tabelle3.Shapes("Diagramm 7").Width = Breite
Tabelle3.Shapes("Diagramm 6").Left = 13.5 + Breite + 9
Tabelle3.Shapes("Diagramm 6").Top = Tabelle3.Shapes("Diagramm 7").Top
End If
End If
Application.ScreenUpdating = True
ErrExit:
Application.EnableEvents = True
End Sub

Vielen Dank und schöne Grüße
Esther

Anzeige
AW: Diagrammbreite ermittelt, passt aber nicht?
31.08.2015 18:47:27
Matthias
Hallo Esther,
zu deinem Problem möchte ich nur kurz aus deinem Code zitieren:
    Tabelle3.Shapes("Diagramm 7").Width = Breite
Tabelle3.Shapes("Diagramm 7").Width = Breite
Dazu sag ich mal nix weiter, vielleicht kommst du selber drauf^^
lg Matthias

AW: Diagrammbreite ermittelt, passt aber nicht?
31.08.2015 19:02:03
Esther
Ok, da hab ich eigentlich nichts geändert... außer deine "1" und "2" ausgetauscht.
Ich vermute, es muss einmal die 7 und einmal die 6 rein, richtig? Habs grad getestet, meine Vermutung scheint sich zu bewahrheiten... die Diagrammbreite verteilt sich gleichmäßig :)
Aber nun gehen die Diagramme nicht bis ganz zum Ende, d.h. es werden immer die letzten 1 oder 2 Spalten freigelassen.
Hmmm...

Anzeige
AW: Diagrammbreite ermittelt, passt aber nicht?
01.09.2015 08:40:25
Esther
Passt ALLES! Vielen Dank für deine Hilfe :)
VG
Esther

56 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige