A | B | C | D | E | F | |
1 | Gruß Sepp | |||||
2 | ||||||
3 |
A | B | C | D | E | F | |
1 | Gruß Sepp | |||||
2 | ||||||
3 |
Sub ausblenden1()
For Each Zelle In Selection
zv = Zelle.Value
If zv = 0 Then Zelle.EntireRow.Hidden = True
Next Zelle
End Sub
Sub ausblenden2()
Dim zv
Dim RaZeile As Range
For Each Zelle In Selection
zv = Zelle.Value
If zv = 0 Then
If RaZeile Is Nothing Then
Set RaZeile = Zelle.Rows
Else
Set RaZeile = Union(RaZeile, Zelle.Rows)
End If
End If
Next Zelle
If Not RaZeile Is Nothing Then RaZeile.EntireRow.Hidden = True
Set RaZeile = Nothing
End Sub
ausblenden1() benutze ich, wenn es sich um eine kleinere Anzahl von Zellen bzw. Zeilen handelt. Es wird dann eine Zeile nach der andern ausgeblendet. Wenn es sich um eine grössere Anzahl handelt, dauert dieses Makro unendlich lange. Deshalb ausblenden2(): Da werden die auszublendenden Zeilen in einem Array "gesammelt" und dann alle zusammen in einem einzigen Durchgang ausgeblendet: Eine gewaltige Zeitersparnis!!Zelle.Value
Zelle.Text
die Null durch eine Formel erzeugt wird.
If zv = "" Then Zelle.EntireRow.Hidden = True
Private Sub TextBox8_Change ()
Worksheets("Zeugnis").Range("b25").value=me.TextBox8
End Sub
Private Sub Worksheet _Change(ByVal Target as Range)
If Target.Address=("a25:"a28) Then
Call ausblenden1
End if
End Sub
Sub ausblenden1()
With Sheets("Zeugnis")
Set testbereich = .Range("A25:A28")
For Each zelle In testbereich
r = zelle.Row
If zelle.Value = 1 Then
.Rows(r).Hidden = True
Else
.Rows(r).Hidden = False
End If
Next
End With
End Sub
Das zweite Makro, das Du aufführst, müsste so heissen:Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("A25:A28"))
If Target Is Nothing Then Exit Sub
Call ausblenden1
End Sub
Private Sub Worksheet _Change(ByVal Target as Range)
If Target.Address=("a25:"a28) Then
Call ausblenden1
End if
End Sub