Hi Wolfgang,
allgemein könnte man das so lösen:
Hinweis: Ungetesteter Code, da freihand geschrieben - habe aktuell kein Excel zur Verfügung.
Deshalb sind Kompilierungs- und/oder Laufzeitfehler nicht ausgeschlossen.
'in Tabelle: Datenblatt
Private Sub Worksheet_Change(ByVal Target as Range)
Dim rngCell As Range
Dim strTargetAddress As String
Dim blnVisible As Boolean
For Each rngCell in Target.Cells
Select Case rngCell.Address(False, False)
Case "B4"
strTable = "Studie_1"
strTargetAddress = "8:16, 8:30"
Case "B5"
strTable = "Studie_2"
strTargetAddress = "17:23, 31:53"
Case "B6"
strTable = "Studie_3"
strTargetAddress = "26:34, 54:76"
Case "B7"
strTable = "Studie_4"
strTargetAddress = "35:43, 77:99"
Case "B8"
strTable = "Studie_5"
strTargetAddress = "44:52, 100:122"
Case "B9"
strTable = "Studie_6"
strTargetAddress = "53:61, 123:145"
Case "B10"
strTable = "Studie_7"
strTargetAddress = "60:62, 146:168"
Case Else
GoTo Continue_For
End Select
blnVisible = Len(Trim$(rngCell.Value)) > 0
Worksheets(strTable).Visible = blnVisible
Sheets(Array("Studien", strTable)) _
.Range(strTargetAddress).EntireRow _
.Hidden = Not blnVisible
Continue_For:
Next
End Sub
Wenn die Bereiche immer die gleiche Größe haben, dann könnte man das wahrscheinlich sogar ohne Select-Case-Statement formulieren.
Grüße
|