Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Worksheets("Zusammenfassung").Range("A2")) Is Nothing Then Exit Sub Worksheets("Indikatorenkatalog").Range("A27, A38").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Präsenzkurs" Worksheets("Indikatorenkatalog").Range("A6, A28, A39").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Onlinekurs" End Sub
Code:
If Intersect(Target, Worksheets("Zusammenfassung").Range("B2")) Is Nothing Then Exit Sub Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse ohne Theorieanteil" Worksheets("Indikatorenkatalog").Range("A16, A40, A67, A68").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse mit Theorieanteil"
Liebe Leute
Bin nicht der VBA-Pro - füge jeweils nur Codes ein. Ich möchte nun die beiden Codes oben kombinieren. Könnt ihr mir helfen?
Es geht darum, dass im Tabellenblatt "Indikatorenkatalog" jeweils Spalten ausgeblendet werden, je nach dem was im Tabellenblatt "Zusammenfassung" mittels Dropdown ausgewählt wird. Und da gibts in der Zelle A2 die Möglichkeit zwischen "Präsenz- und Onlinekurs" auszuwählen und in Zelle 2 zwischen "Kurse ohne Theorieanteil und Kurse mit Theorieanteil".
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Worksheets("Zusammenfassung").Range("A2")) Is Nothing Then ... ... End If If Not Intersect(Target, Worksheets("Zusammenfassung").Range("B2")) Is Nothing Then ... ... End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Klappt irgendwie noch nicht. Wenn ich die Zellen A2:C2 zudem leer lasse, blendet es mir die zuvor ausgeblendeten Zeilen nicht wieder ein. Kann es sein, dass der Intersect Befehl nicht der ideale ist dafür?
Die drei Codes müssten in einen genommen werden und wenn in A2:C2 nix steht, müssten die entsprechenden Zeilen wieder eingeblendet werden.
Hat mir sonst noch jemand einen Tipp?
Code:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Worksheets("Zusammenfassung").Range("A2")) Is Nothing Then Exit Sub Worksheets("Indikatorenkatalog").Range("A27, A38").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Präsenzkurs" Worksheets("Indikatorenkatalog").Range("A6, A28, A39").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Onlinekurs"
If Intersect(Target, Worksheets("Zusammenfassung").Range("B2")) Is Nothing Then Exit Sub Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse ohne Theorieanteil" Worksheets("Indikatorenkatalog").Range("A16, A40, A67, A68").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse mit Theorieanteil"
If Intersect(Target, Worksheets("Zusammenfassung").Range("C2")) Is Nothing Then Exit Sub Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("C2").Value = "Ja" Worksheets("Indikatorenkatalog").Range("A40, A67").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("C2").Value = "Nein"
Lies dir schauans Beitrag noch Mal durch und verzichte anschließend auf Exit Sub. Mehr noch: merke dir, dass Exit Sub der Teufel in Person ist, wenn auch nur die kleinste Möglichkeit besteht, dass du Mal was ergänzen möchtest.
Vielen, vielen lieben Dank euch beiden, es hat nun geklappt. Vorerst jedenfalls (daher hatte ich auch das Gefühl, es ginge nicht). Der Code klappt so schonmal sehr gut. Nur noch eine Sache. Die Befehle sollten sich nicht gegenseitig ersetzen, sondern ergänzen. Die Zeile A40 z.B. kommt in zwei Befehlen vor und sollte auch ausgeblendet werden, wenn nur der eine Befehl das Ausblenden zur Folge hätte.
Versteht ihr, was ich meine?
Code:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Worksheets("Zusammenfassung").Range("A2")) Is Nothing Then Worksheets("Indikatorenkatalog").Range("A27, A38").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Präsenzkurs" Worksheets("Indikatorenkatalog").Range("A6, A28, A39").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Onlinekurs" End If If Not Intersect(Target, Worksheets("Zusammenfassung").Range("B2")) Is Nothing Then Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse ohne Theorieanteil" Worksheets("Indikatorenkatalog").Range("A5, A16, A27, A40, A67, A68").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse mit Theorieanteil" End If If Not Intersect(Target, Worksheets("Zusammenfassung").Range("C2")) Is Nothing Then Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("C2").Value = "Ja" Worksheets("Indikatorenkatalog").Range("A40, A67").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("C2").Value = "Nein" End If End Sub
'Befehl 1' Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Worksheets("Zusammenfassung").Range("A2")) Is Nothing Then Worksheets("Indikatorenkatalog").Range("A27, A38").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Präsenzkurs" Worksheets("Indikatorenkatalog").Range("A6, A28, A39").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("A2").Value = "Onlinekurs"
Code:
'Befehl 2' If Not Intersect(Target, Worksheets("Zusammenfassung").Range("B2")) Is Nothing Then Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse ohne Theorieanteil" Worksheets("Indikatorenkatalog").Range("A5, A16, A27, A40, A67, A68").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("B2").Value = "Kurse mit Theorieanteil"
Code:
'Befehl 3' If Not Intersect(Target, Worksheets("Zusammenfassung").Range("C2")) Is Nothing Then Worksheets("Indikatorenkatalog").Range("A17").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("C2").Value = "Ja" Worksheets("Indikatorenkatalog").Range("A40, A67").EntireRow.Hidden = Worksheets("Zusammenfassung").Range("C2").Value = "Nein"
Liebe Leute
Ich stehe bei diesem Problem leider noch immer an. Ich habe diese drei Befehle oben, welche ich gerne kombinieren würde. Je nach dem, was ich im Tabellenblatt "Zusammenfassung" anwähle, blendet es mir im Tabellenblatt "Indikatorenkatalog" andere Dinge aus.
Im Tabellenblatt "Zusammenfassung" habe ich die Zellen A2:C2, in denen ich mittels Dropdown jeweils zwei Möglichkeiten gegeben habe (siehe Codes oben). Nun habe ich im Tabellenblatt "Indikatorenkatalog" allerdings Zeilen, die z.B. sowohl beim Befehl 2 und Befehl 3 ausgeblendet werden können (wie die Zeile A17). Wenn die Zeile A17 also bei einem der beiden Befehle ausgeblendet werden sollte, soll dies auch so passieren (unabhängig davon, was beim anderen Befehl gemacht würde.
Ich schaffe es also nicht, die Befehle zu kombinieren, so dass mit den Dropdowns in den Zellen A2:C2 gearbeitet werden kann. Zeilen, die gemäss Dropdown NICHT ausgeblendet werden sollen, sollten bei Änderung des Dropdowns natürlich wieder erscheinen.
Wenn Du alle 3 Zellen nacheinander prüfen willst und dann auch schlimmstenfalls alle 3 Aktionen ausführen, dann passt es mit 3 unabhängigen Prüfungen, also 3x
Code:
If Prüfung 1 Then 'Aktion 1 ... End If If Prüfung 2 Then 'Aktion 2 ... End If If Prüfung 3 Then 'Aktion 3 ... End If
Wenn Du aber nach dem ersten Treffer keine weiteren Prüfungen durchführen willst, dann z.B.. mit der Kuh Else
Also, ernsthaft sähe es etwa so aus:
Code:
If Prüfung 1 Then 'Aktion 1 ... ElseIf Prüfung 2 Then 'Aktion 2 ... ElseIf Prüfung 3 Then 'Aktion 3 End If
Und dann wäre noch die Variante, dass die Folgeprüfungen nur dann durchgeführt werden, wenn die vorhergehenden wahr sind
Code:
If Prüfung 1 Then 'Aktion 1 ... If Prüfung 2 Then 'Aktion 2 ... If Prüfung 3 Then 'Aktion 3 End If End If End If
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Klappt leider noch nicht. Wenn ich den Inhalt einer Zelle von A2:C2 lösche, blendet es mir die entsprechende Zeile nicht wieder ein. Des Weiteren blendet es mir z.B. die Zeile A17 nicht aus, wenn von den Zellen B2:C2 nur eine die Zeile A17 ausblenden würde (so wie der Code jetzt steht, müssen B2 UND C2 zutreffen).
Ich möchte also, dass alle Prüfungen durchgeführt werden, unabhängig davon, was die vorherige Prüfung ergab. Wenn eine vorherige Prüfung allerdings eine Zeile bereits ausgeblendet hat, sollte dies auch so bleiben. Ausser, die Dropdwons in A2:C2 stehen so, dass diese Zeile in keiner der Dropdowns ausgeblendet wird.
Ich denke also, dass es Variante 1 oder 3 sein sollte. Mit beiden komme ich allerdings nicht zum gewünschten Ergebnis. Irgendwas mache ich also noch falsch...