Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Zeilen ein/ausblenden bei änderung des % einer Zelle

Forumthread: Zeilen ein/ausblenden bei änderung des % einer Zelle

Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 14:22:02
thorsten
Hallo zusammen,
habe folgendes Problem und hoffe, dass Ihr mir helfen könnt.
Ich habe 3 Eingabefelder: Finanzierungsbetrag (hier 5 Mio. €), Eigenkapital (hier 50%), Kreditfinanzierung und Rest
Je nachdem was in den letzten beiden Eingeabefledern für ein % steht, sollen bestimme Zeilen ein- bzw. ausgeblendet werden.
Bsp:: wenn bei Kreditfinanzierung 0% steht dann sollen die Zeilen 10 bis 12 ausgeblendet werden (und Zeilen 14 bis 16 eingeblendet bleiben)

Ich hab das mit einem PRIVATE SUB WORKSHEET_CHANGE versucht, aber es klappt nicht:




Private Sub Worksheet_Change(ByVal Target As Range)
Cells.EntireRow.Hidden = False
If Not Intersect(Target, Range("D6")) Is Nothing Then
If Range("D6").Value = "1" Then
Rows("10:12").EntireRow.Hidden = True
ElseIf Range("D6").Value = "2" Then
Rows("14:16").EntireRow.Hidden = True
End If
End If
End Sub



Anbei auch mal die Excel Datei
https://www.herber.de/bbs/user/180423.xlsm

Wer kann helfen ?’

Vielen Dank im voraus
Thorsten


Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 14:35:11
emkaes
Hi,

dein Makro reagiert nicht, da du die Zellen C5 und C6 änderst ==> intersect(Target, Range....)

Ausserdem sin die Einträge in D6 Zahlen, keine Texte. Das ist aber unkritisch und funzt trotzdem, weil excel manchmal intelligenter ist als der User



Private Sub Worksheet_Change(ByVal Target As Range)
Cells.EntireRow.Hidden = False
If Not Intersect(Target, Range("C5:C6")) Is Nothing Then
If Range("D6").Value = 1 Then
Rows("10:12").EntireRow.Hidden = True
ElseIf Range("D6").Value = 2 Then
Rows("14:16").EntireRow.Hidden = True
End If
End If
End Sub



emkaes
Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 14:56:27
daniel
Hi
mehrere Fehler
1. wenn diese Aktion nur für dieses Tabellenblatt gelten soll, muss das Makro ins Modul des Tabellenblatts (Modul Tabelle1)
wenn es im Modul DieseArbeitsmappe steht, dann gilt es für alle Tabellenblätter, aber auch nur dann wenn du es richtig benennst.
im Modul DieseArbeitsmappe wäre der Makroname:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)


2. du verwendest das Change-Event. Dieses spricht aber nur an, wenn du eine Zelle manuell änderst, und nur die manuell geänderten Zellen sind teil von Target.
in D6 steht aber eine Formel und Formeln kannst du nicht auf eine Wertänderung überwachen.
du musst also die Zellen abfragen, die einen manuellen Eintrag haben und einen Einfluss auf das Ergebnis von D6 haben


3. wenn du alle Zeilen jedesmal einblendest, wirst du wahrscheinlich nicht glücklich, denn dann siehst du immer alle Zellen.

besser also so im Modul Tabelle1
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("C6")) Is Nothing Then
Cells.EntireRow.Hidden = False
If Range("D6").Value = "1" Then
Rows("10:12").EntireRow.Hidden = True
ElseIf Range("D6").Value = "2" Then
Rows("14:16").EntireRow.Hidden = True
End If
End If
End Sub


wenn die Formel in D6 von mehreren Zellen abhängig ist, kannst du auch auf diese gezielt verweisen:
If Not Intersect(Target, Range("D6").Precedents) Is Nothing Then


Gruß Daniel






Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 17:34:32
GerdL
Moin Thomas,

du kannst es an C6 festmachen.

'Modul der Tabelle
Private Sub Worksheet_Change(ByVal Target As Range)


With Target
If .Address(0, 0, xlA1) = "C6" Then
If IsEmpty(Target) Then
Union(Rows("12:14"), Rows("14:16")).Hidden = False
Else
Rows("10:12").Hidden = .Cells = 0
Rows("14:16").Hidden = .Cells > 0
End If
End If
End With

End Sub

Gruß Gerd
Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 19:29:17
daniel
Hi
du kannst das auch ganz anders lösen:

1. such dir eine freie Spalte und schreibe dort eine Formel rein, die WAHR ergibt wenn die Zeile sichtbar sein soll und FALSCH wenn sie ausgeblendet sein soll.
2. richte für diesen Zellbereich (+eine Zeile oberhalb) den Autofilter ein (es reicht, wenn du das nur für den Zellbereich mit den Formeln machst) und filtere nach WAHR.
3. Als Makro zum ein- und Ausblenden reicht es jetzt, den Autofilter zu aktualisieren, am besten über das Calculate-Event.

Private Sub Worksheet_Calculate()

Me.AutoFilter.ApplyFilter
End Sub


Gruß Daniel
Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 18:31:35
thorsten
Danke Gerd.
Das ist sogar noch einfacher als ich eigentlich angedacht hatte.

NUR HAB ICH JETZT FOLGENDES PROBLEM:

Also Dein Code funktioniert perfekt wenn ich in dem Sheet nur ein „Private Sub Worksheet_Change ….” habe.

Aber leider ist meine Datei in Wirklichkeit etwas komplexer und genau in dem Sheet habe ich auch noch verschiedene Combo-Boxen „Private Sub CB1_Change()“ (+ weitere „Private Sub CB2_Change()“ und CB3, CB4, etc.) eingebaut.

Und dann funktioniert die „Private Sub Worksheet_Change ….“ so wie Du sie vorschlägst nicht mehr.

Was mach ich falsch ?

Danke im voraus
Anzeige
AW: ... in Deiner Beispieldatei ...
20.03.2026 18:51:52
schauan
... sind keine Combo-Boxen?

Und dann funktioniert die „Private Sub Worksheet_Change ….“ so wie Du sie vorschlägst nicht mehr.

... wie macht sich das bemerkbar?
AW: ... in Deiner Beispieldatei ...
20.03.2026 19:05:51
thorsten
hallo schauan

ganz einfach:
die CB1, etc. werden halt ganz normal ausgeführt (sobald man diese anklickt und was ändert),
aber im Fall von der "Private Sub Worksheet_Change" Anweisung tut sich halt nichts (dh. die Zeilen die ich ein-/ ausblenden möchte, blenden sich halt nicht ein / aus)


sieht halt so aus:



Private Sub CB1_Change()
Select Case Range("E16")
Case 0
Rows("51:75").EntireRow.Hidden = True
Case 1
Rows("51:75").EntireRow.Hidden = False
Case Else
End Select

End Sub

--------------------------------------

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address(0, 0, xlA1) = "C6" Then
If IsEmpty(Target) Then
Union(Rows("12:14"), Rows("14:16")).Hidden = False
Else
Rows("10:12").Hidden = .Cells = 0
Rows("14:16").Hidden = .Cells > 0
End If
End If
End With
End Sub
Anzeige
AW: ... in Deiner Beispieldatei ...
20.03.2026 19:13:32
schauan
Das Ein- und Ausblenden ist zum Einen keine Änderung und löst zum Anderen generell kein Ereignis aus.
Man kann ggf.indirekt was auslösen wenn man mit Teilergebnis arbeitet und dann das Calculate Ereignis nutzt.
Besser wäre aber, den Code so zu schreiben dass ggf. Da was auch immer geprüft wird und daraus ableitend weitere Aktionen erfolgen.
Anzeige
AW: ... in Deiner Beispieldatei ...
20.03.2026 19:14:58
thorsten
ok
und wie macht man dies in diesem Fall ?
AW: ... in Deiner Beispieldatei ...
20.03.2026 19:25:13
schauan
Ich rate mal, dass Du in der Cbo eine Auswahl 0 und 1 hast und diese in C16 eingetragen wird. Das prüfst Du und blendest dann was aus. Im WSChange beziehst Du Dich auf C6... Eine Frage wäre nun, ob evtl die 6 oder die 16 falsch ist.
Ansonsten, nimm den code vom WSChange mit ins CBoChange.
Ich tippe gerade am Handy, da ist das Springen im Thread ziemlich unmöglich 🙄
Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 19:05:31
GerdL
Was mach ich falsch ?


So ist es ein Ratespiel, Thorsten. Deine Beispieldatei - natürlich ohne Echtdaten - u. deine Fehlebeschreibung würde sicher beim Helfen helfen.

Gruß Gerd
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 19:08:55
thorsten
Hi GerdL
gerade schauan geantwortet :-

XXXXX

ganz einfach:
die CB1, etc. werden halt ganz normal ausgeführt (sobald man diese anklickt und was ändert),
aber im Fall von der "Private Sub Worksheet_Change" Anweisung tut sich halt nichts (dh. die Zeilen die ich ein-/ ausblenden möchte, blenden sich halt nicht ein / aus)


sieht halt so aus:



Private Sub CB1_Change()
Select Case Range("E16")
Case 0
Rows("51:75").EntireRow.Hidden = True
Case 1
Rows("51:75").EntireRow.Hidden = False
Case Else
End Select

End Sub

--------------------------------------

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address(0, 0, xlA1) = "C6" Then
If IsEmpty(Target) Then
Union(Rows("12:14"), Rows("14:16")).Hidden = False
Else
Rows("10:12").Hidden = .Cells = 0
Rows("14:16").Hidden = .Cells > 0
End If
End If
End With
End Sub
Anzeige
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 16:41:49
thorsten
Super.
Danke an Euch beide.
Vor allem die Anmerkungen bzgl. des MODULS hat geholfen :-)
Danke
AW: Zeilen ein/ausblenden bei änderung des % einer Zelle
20.03.2026 14:42:48
emkaes
ach ne, du änderst ja lediglich ==>
 .....intersect(target,Range("C6"))...
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18