Excel: bedingtes ausblenden

hallo! ich muss für einen kunden eine tabelle erstellen, leider habe ich von vba so gut wie keine ahnung. ich würde gerne folgendes machen:

die tabelle ist in „blöcken“ untereinander aufgebaut, jeder block zu einem bestimmten thema. es wäre nun gut, wenn über jedem block ein auswahl-feld stände, in dem man sich aussuchen kann, ob der block eingeblendet werden soll oder nicht.

ich habe also in die zeile oberhalb eines jeden blocks eine listen-gültigkeit gesetzt. A1 ist also der string „Einblenden?“ und B1 ist
Daten–>Gültigkeit–>Liste–>„Ja;Nein“

nun wollte ich ein makro schreiben (ich hab frühe schon programmiert, dachte, ich kann das leicht lernen…) in dem sinngemäß steht:

Wenn B1 den Inhalt „Ja“ hat, blende die Zeilen 2,3,4,5 aus, sonst blende sie ein"

entsprechend soll dann für B7 die Zeilen 8,9,10,11 ein und ausgeblendet werden usw.

das ist sicher ziemlich leicht, aber bis ich michin vba eingefuchst hab, ist der kunde weg *g* und meine aufgabe ist eigentlich eine ganz andere… und google hilft auch nicht viel, wenn man sich erst in die struktur eine prog-sprache einlesen muss.

vielen dank für eure hilfe!

grmpf… natürlich soll es andersherum sein: wenn die antwort „ja“ ist, soll eingeblendet werden, sonst nicht *g*

die tabelle ist in „blöcken“ untereinander aufgebaut, jeder
block zu einem bestimmten thema. es wäre nun gut, wenn über
jedem block ein auswahl-feld stände, in dem man sich aussuchen
kann, ob der block eingeblendet werden soll oder nicht.

Hallo Chris,

Daten–Gruppierung und Gliederung --… bringt dir nix?

Bei Vba,
sind die Blöcke immer durch exakt eine Leerzeile getrennt?
Sind sie immer 5 Zeilen „hoch“?

Gruß
Reinhard

die tabelle ist in „blöcken“ untereinander aufgebaut, jeder
block zu einem bestimmten thema. es wäre nun gut, wenn über
jedem block ein auswahl-feld stände, in dem man sich aussuchen
kann, ob der block eingeblendet werden soll oder nicht.

Hallo Chris,

Daten–Gruppierung und Gliederung --… bringt dir nix?

nein. da die tabelle riesengroß ist und viele blätter hat usw. (ich habe hier stark vereinfacht dargestellt) ist dies hier nicht möglich.

Bei Vba,
sind die Blöcke immer durch exakt eine Leerzeile getrennt?
Sind sie immer 5 Zeilen „hoch“?

jein. das layout dieser (ergebnis-)tabelle kann im laufe der arbeit noch variieren, wenn der kunde mal wieder sagt: „kann das nicht lieber eine spalte tiefer?“.
aber: auf jeden fall bleiben die blöcke alle gleichgroß, und auf jeden fall werden am ende immer gleichviel zeilen dazwischenliegen.
wenn du mir sagst, an welcher stelle des scripts diese werte liegen, werde ich sie sicher entsprechend anpassen können.

Gruß
Reinhard

danke für die unglaublich schnelle antwort!

Hallo Chris,

Daten–Gruppierung und Gliederung --… bringt dir nix?

nein. da die tabelle riesengroß ist und viele blätter hat usw.
(ich habe hier stark vereinfacht dargestellt) ist dies hier
nicht möglich.

der Code soll automatisch in mehreren Blättern reagieren?

Bei Vba,
sind die Blöcke immer durch exakt eine Leerzeile getrennt?
Sind sie immer 5 Zeilen „hoch“?

jein. das layout dieser (ergebnis-)tabelle kann im laufe der
arbeit noch variieren, wenn der kunde mal wieder sagt: „kann
das nicht lieber eine spalte tiefer?“.
aber: auf jeden fall bleiben die blöcke alle gleichgroß, und
auf jeden fall werden am ende immer gleichviel zeilen
dazwischenliegen.

Mein Fehler. Die Anzahl der leerzeichen dazwischen ist egal, Vba muß nur wissen ob da IMMER Leerzeilen dazwischen sind oder auch nicht.

wenn du mir sagst, an welcher stelle des scripts diese werte
liegen, werde ich sie sicher entsprechend anpassen können.

Schauen wir mal, bin noch unentschlossen wie ich den Code bastle und warte deine Antworten ab.

Gruß
Reinhard

Hallo Chris,

Daten–Gruppierung und Gliederung --… bringt dir nix?

nein. da die tabelle riesengroß ist und viele blätter hat usw.
(ich habe hier stark vereinfacht dargestellt) ist dies hier
nicht möglich.

der Code soll automatisch in mehreren Blättern reagieren?

nein, nur dort.

Bei Vba,
sind die Blöcke immer durch exakt eine Leerzeile getrennt?
Sind sie immer 5 Zeilen „hoch“?

jein. das layout dieser (ergebnis-)tabelle kann im laufe der
arbeit noch variieren, wenn der kunde mal wieder sagt: „kann
das nicht lieber eine spalte tiefer?“.
aber: auf jeden fall bleiben die blöcke alle gleichgroß, und
auf jeden fall werden am ende immer gleichviel zeilen
dazwischenliegen.

Mein Fehler. Die Anzahl der leerzeichen dazwischen ist egal,
Vba muß nur wissen ob da IMMER Leerzeilen dazwischen sind oder
auch nicht.

es werden immer mindestens eine leerzeile dazwischenliegen; auf jeden fall aber immer gleichviele.

wenn du mir sagst, an welcher stelle des scripts diese werte
liegen, werde ich sie sicher entsprechend anpassen können.

Schauen wir mal, bin noch unentschlossen wie ich den Code
bastle und warte deine Antworten ab.

mach dir keinen stress wegen mir; abgabe des projekts ist donnerstag. die tabelle ist nur ein kleiner teil des projekts und das ausblenden ist nur ein reines layout-problem. ich danke dir für die hilfe, aber du musst deswegen nicht alles andere liegenlassen *g*

Gruß
Reinhard

es werden immer mindestens eine leerzeile dazwischenliegen;
auf jeden fall aber immer gleichviele.

wenn du mir sagst, an welcher stelle des scripts diese werte
liegen, werde ich sie sicher entsprechend anpassen können.

Hallo Chris,

in das Modul des tabellenblattes, z.B. Tabelle1:

Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim ZeiEnde As Long
If Target.Count \> 1 Then Exit Sub
If Target.Column 2 Then Exit Sub
If Target.Offset(0, -1).Value "Einblenden" Then Exit Sub
ZeiEnde = Cells(Target.Row, 2).End(xlDown).Row
If UCase(Target.Value) = "JA" Then
 Range(Cells(Target.Row + 1, 2), Cells(ZeiEnde, 2)).EntireRow.Hidden = False
Else
 Range(Cells(Target.Row + 1, 2), Cells(ZeiEnde, 2)).EntireRow.Hidden = True
End If
End Sub

Gruß
Reinhard

WOW danke das ist großartig! vielen lieben dank für die schnelle hilfe lieber reinhard!