Nun weiss ich wie es OHNE API-Aufruf und OHNE Missbrauch vom Worksheet_Change-Event funktioniert!!!
Zuerst habe ich eine UserForm, mit dem Namen "HideRange", eingefügt und die Eigenschaft "Showmodal" auf FALSE gesetzt.
Dann folgenden Quelltext in der UserForm eingefügt:
Option Explicit
Public r As Integer
Public c As Integer
Public HideIt As Boolean
Private Sub UserForm_Activate()
If r 0 Then Rows(r).Hidden = HideIt
If c 0 Then Columns(r).Hidden = HideIt
Unload Me
End Sub
Dann habe ich ein Modul hinzugefügt mit den Funktionen:
Function HideRow(HideIt As Boolean) As Boolean
HideRow = False
Load HideRange
HideRange.r = Application.Caller.Row
HideRange.HideIt = HideIt
HideRange.Show False
HideRow = True
End Function
Function HideColumn(HideIt As Boolean) As Boolean
HideColumn = False
Load HideRange
HideRange.c = Application.Caller.Column
HideRange.HideIt = HideIt
HideRange.Show False
HideColumn = True
End Function
Als Beispiel soll die Reihe 15 ausgeblendet werden:
in B15 schreibe ich =HideRow(A1)
in A1 schreibe ich =WAHR
In dem Moment wo man A1 eingetragen hat, öffnet sich für millisekunden die ungebundene Userform und die Reihe 15 verschwindet :-)
Verwendet man in B15 nicht die Funktion HideRow sondern HideColumn verschwindet die Spalte B.
Man kann diesen Weg auch benutzen um andere Formatierungen per Formel umzusetzen die die "Bedingte Formatierung" nicht anbietet. Auch Zellwert-Veränderungen sind nun indirekt per UDF möglich.
Hoffe das Klappt bei euch genauso gut wie bei mir :-)
Viele Grüße speziell an NoNet ;-)
Christian