Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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

Loop für dynamisches Diagramm

Loop für dynamisches Diagramm
03.11.2016 15:32:22
Heinz
Hallo zusammen,
ich habe ein kleines Problem mit dem Erstellen eines Loops für ein dynamsiches Diagramm.
Folgendes Szenario:
In Datenblatt 1 ("Effekte") habe ich eine Tabelle (in die der Nutzer Werte einfügen kann) und ein (Wasserfall)Diagramm. In Datenblatt 2 ("Tabelle") befindet sich die Berechnungstabelle für das Diagramm. Die Daten zieht sich Datenblatt 2 aus der Tabelle in Datenblatt 1.
Ich habe es hinbekommen, dass über ein automatisches Makro die Spalten, welche nicht für das Diagramm benötigt werden, in Datenblatt 2 ausgeblendet werden. Jedoch ist das Makro sehr simpel und wiederholt sich einfach. Ich bin mir sicher, dass es sich mit einem Loop lösen lässt, aber stehe auf dem Schlauch.
Für Hilfe bin ich sehr dankbar!
So sieht der Text momentan aus:

Private Sub Worksheet_Change(ByVal Target As Range)
'Ausgangswert
If IsEmpty(Cells(3, 2)) Then
Sheets("Tabelle").Columns(2).Hidden = True 'Ausblendung nicht ausgefüllter Effekte
Sheets("Tabelle").Range("R28") = Sheets("Tabelle").Range("A28") 'Anpassen der Gesamtverä _
nderung
Else
Sheets("Tabelle").Columns(2).Hidden = False 'Einblendung ausgefüllter Effekte
Sheets("Tabelle").Range("R28") = "" 'Die Gesamtveränderung muss nicht angepasst werden
End If
'Effekt 1
If IsEmpty(Cells(5, 2)) Then
Sheets("Tabelle").Columns(3).Hidden = True
Sheets("Tabelle").Range("R29") = Sheets("Tabelle").Range("B29")
Else
Sheets("Tabelle").Columns(3).Hidden = False
Sheets("Tabelle").Range("R29") = ""
End If
'Effekt 2
If IsEmpty(Cells(6, 2)) Then
Sheets("Tabelle").Columns(4).Hidden = True
Sheets("Tabelle").Range("R30") = Sheets("Tabelle").Range("C30")
Else
Sheets("Tabelle").Columns(4).Hidden = False
Sheets("Tabelle").Range("R30") = ""
End If
'Effekt 3
If IsEmpty(Cells(7, 2)) Then
Sheets("Tabelle").Columns(5).Hidden = True
Sheets("Tabelle").Range("R31") = Sheets("Tabelle").Range("D31")
Else
Sheets("Tabelle").Columns(5).Hidden = False
Sheets("Tabelle").Range("R31") = ""
End If
'Effekt 4
If IsEmpty(Cells(8, 2)) Then
Sheets("Tabelle").Columns(6).Hidden = True
Sheets("Tabelle").Range("R32") = Sheets("Tabelle").Range("E32")
Else
Sheets("Tabelle").Columns(6).Hidden = False
Sheets("Tabelle").Range("R32") = ""
End If
'Effekt 5
If IsEmpty(Cells(9, 2)) Then
Sheets("Tabelle").Columns(7).Hidden = True
Sheets("Tabelle").Range("R33") = Sheets("Tabelle").Range("F33")
Else
Sheets("Tabelle").Columns(7).Hidden = False
Sheets("Tabelle").Range("R33") = ""
End If
'Effekt 6
If IsEmpty(Cells(10, 2)) Then
Sheets("Tabelle").Columns(8).Hidden = True
Sheets("Tabelle").Range("R34") = Sheets("Tabelle").Range("G34")
Else
Sheets("Tabelle").Columns(8).Hidden = False
Sheets("Tabelle").Range("R34") = ""
End If
'Effekt 7
If IsEmpty(Cells(11, 2)) Then
Sheets("Tabelle").Columns(9).Hidden = True
Sheets("Tabelle").Range("R35") = Sheets("Tabelle").Range("H35")
Else
Sheets("Tabelle").Columns(9).Hidden = False
Sheets("Tabelle").Range("R35") = ""
End If
'Effekt 8
If IsEmpty(Cells(12, 2)) Then
Sheets("Tabelle").Columns(10).Hidden = True
Sheets("Tabelle").Range("R36") = Sheets("Tabelle").Range("I36")
Else
Sheets("Tabelle").Columns(10).Hidden = False
Sheets("Tabelle").Range("R36") = ""
End If
'Effekt 9
If IsEmpty(Cells(13, 2)) Then
Sheets("Tabelle").Columns(11).Hidden = True
Sheets("Tabelle").Range("R37") = Sheets("Tabelle").Range("J37")
Else
Sheets("Tabelle").Columns(11).Hidden = False
Sheets("Tabelle").Range("R37") = ""
End If
'Effekt 10
If IsEmpty(Cells(14, 2)) Then
Sheets("Tabelle").Columns(12).Hidden = True
Sheets("Tabelle").Range("R38") = Sheets("Tabelle").Range("K38")
Else
Sheets("Tabelle").Columns(12).Hidden = False
Sheets("Tabelle").Range("R38") = ""
End If
'Effekt 11
If IsEmpty(Cells(15, 2)) Then
Sheets("Tabelle").Columns(13).Hidden = True
Sheets("Tabelle").Range("R39") = Sheets("Tabelle").Range("L39")
Else
Sheets("Tabelle").Columns(13).Hidden = False
Sheets("Tabelle").Range("R39") = ""
End If
'Effekt 12
If IsEmpty(Cells(16, 2)) Then
Sheets("Tabelle").Columns(14).Hidden = True
Sheets("Tabelle").Range("R40") = Sheets("Tabelle").Range("M40")
Else
Sheets("Tabelle").Columns(14).Hidden = False
Sheets("Tabelle").Range("R40") = ""
End If
'Effekt 13
If IsEmpty(Cells(17, 2)) Then
Sheets("Tabelle").Columns(15).Hidden = True
Sheets("Tabelle").Range("R41") = Sheets("Tabelle").Range("N41")
Else
Sheets("Tabelle").Columns(15).Hidden = False
Sheets("Tabelle").Range("R41") = ""
End If
'Effekt 14
If IsEmpty(Cells(18, 2)) Then
Sheets("Tabelle").Columns(16).Hidden = True
Sheets("Tabelle").Range("R42") = Sheets("Tabelle").Range("O42")
Else
Sheets("Tabelle").Columns(16).Hidden = False
Sheets("Tabelle").Range("R42") = ""
End If
'Effekt 15
If IsEmpty(Cells(19, 2)) Then
Sheets("Tabelle").Columns(17).Hidden = True
Sheets("Tabelle").Range("R43") = Sheets("Tabelle").Range("P43")
Else
Sheets("Tabelle").Columns(17).Hidden = False
Sheets("Tabelle").Range("R43") = ""
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Loop für dynamisches Diagramm
03.11.2016 16:32:30
Michael
Hallo Heinz!
Möglich, dass ich mich wo geirrt habe in Deinem Code-Gewusel ;-), aber probier mal:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, j&, s&
'Ausgangswert
If IsEmpty(Cells(3, 2)) Then
'Nicht-ausgefüllte Effekte ausblenden
Sheets("Tabelle").Columns(2).Hidden = True
'Gesamtveränderung anpassen
Sheets("Tabelle").Range("R28") = Sheets("Tabelle").Range("A28")
Else
'Ausgefüllte Effekte einblenden
Sheets("Tabelle").Columns(2).Hidden = False
'Gesamtveränderung nicht anpassen
Sheets("Tabelle").Range("R28") = ""
End If
j = 29: s = 2 'Startwerte Zeilen-, Spaltenzähler
For i = 5 To 19 'Zeilen 5 bis 19, Effekt 1, 2... usw.
Select Case IsEmpty(Cells(i, 2))
Case True
'Spalte jeweils i - 2
Sheets("Tabelle").Columns(i - 2).Hidden = True
'18 = Spalte R, Zeile = j (Startwert 29), Spalte = s (Startwert 2)
Sheets("Tabelle").Cells(j, 18) = Sheets("Tabelle").Cells(j, s)
Case Else
'Spalte jeweils i - 2
Sheets("Tabelle").Columns(i - 2).Hidden = False
'18 = Spalte R, Zeile = j (29, 30,...)
Sheets("Tabelle").Cells(j, 18) = ""
End Select
'Hochzählen (Zelle R29, R30... usw. | Spalte B29, C30... usw.)
j = j + 1: s = s + 1
Next i 'nächste(r) Zeile (Effekt)
End Sub
Kommentare zu der von mir ausgemachten Systematik Deines Codes sind im Code enthalten.
LG
Michael
Anzeige
AW: Loop für dynamisches Diagramm
03.11.2016 16:45:37
Heinz
Genau danach habe ich gesucht! Wenn der Zeilensprung in Datenblatt 1 nicht wäre, wäre es wohl noch einmal viel einfacher. Vielen Dank, Michael!
Super, freut mich! Viel Erfolg noch! LG und owT
03.11.2016 16:49:23
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige