1.5k Aufrufe
Gefragt in Tabellenkalkulation von matthiasg Mitglied (183 Punkte)
Hallo,

wie kann ich denn in einer Tabelle mit Werten, Formatierungen und auch Formeln bedingt (per VBA) bestimmte Zellen unsichtbar manchen => Nicht relevante Zellen sollen ausgeblendet werden und ggf. auch wieder erscheinen.

Viele Grüße

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Matthias,

einzelne Zellen kannst du nicht ausblenden. Du kannst ganze Zeilen oder Spalten aus- und einblenden.

Beispiel: In Zelle A4 steht eine Formel. Ist der Wert der Formel 4, dann soll die betreffende Zeile ausgeblendet werden, ansonsten wird die Zeile eingeblendet:

Sub test()

With Range("A4")
If .Value = 4 Then
   Rows(.Row).EntireRow.Hidden = True
 Else
   Rows(.Row).EntireRow.Hidden = False
End If
End With

End Sub

Du kannst z.B. auch die Schriftfarbe auf weiß ändern, dann sieht man die Inhalte der betreffenden Zellen nicht, geht man aber auf die Zellen werden Werte bzw. Formeln angezeigt.

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)
Danke M.O.

die betreffenden Zellen sind von verbundenen Zellen umgeben.

Wie könnte ich denn Rahmen, Hintergrundfarbe und Zellfarbe ein und ausschalten?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Matthias,

hier ein Beispiel:

Sub weiss()

With Range("A4")
  .Font.ColorIndex = 2                           'Schriftfarbe
  .Borders(xlEdgeLeft).ColorIndex = 2            'Rahmen links
  .Borders(xlEdgeRight).ColorIndex = 2           'Rahmen rechts
  .Borders(xlEdgeBottom).ColorIndex = 2          'Rahmen unten
  .Borders(xlTop).ColorIndex = 2                 'Rahmen oben
End With

End Sub

Sub schwarz()

With Range("A4")
  .Font.ColorIndex = 1                           'Schriftfarbe
  .Borders(xlEdgeLeft).ColorIndex = 1            'Rahmen links
  .Borders(xlEdgeRight).ColorIndex = 1           'Rahmen rechts
  .Borders(xlEdgeBottom).ColorIndex = 1          'Rahmen unten
  .Borders(xlTop).ColorIndex = 1                 'Rahmen oben
End With

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)
Danke M.O.,

das Makro habe ich so eingebaut - allerdings werden die Rahmen (von verbundenen Zellen) weiterhin angezeigt.

AN52 und AN53 sind verbunden usw.

Gibt es eine Lösung?

------

Sub Zellen_verstecken_weiss()

With Range("N46,O46, AN52:AO58, AQ52:AT58")
  .Font.ColorIndex = 2                                    'Schriftfarbe
  .Borders(xlEdgeLeft).ColorIndex = 2            'Rahmen links
  .Borders(xlEdgeRight).ColorIndex = 2           'Rahmen rechts
  .Borders(xlEdgeBottom).ColorIndex = 2          'Rahmen unten
  .Borders(xlTop).ColorIndex = 2                    'Rahmen oben
  .Interior.ColorIndex = 0                             'Hintergrundfarbe
 
    End With
End Sub
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Matthias,

was bedeutet

AN52 und AN53 sind verbunden usw.

Wenn du den z.B. den Bereich AN52:AO58 ansprichst, wird davon ausgegangen, dass alle Zellen in diesem Bereich verbunden zu einer Zelle sind, und es werden die äußeren Rahmen in diesem Bereich weiß gefärbt.

Willst du in diesen Bereichen mehrere verbundene Zellen ansprechen, so musst du auch die inneren Rahmenlinien einfärben:

Sub weiss()

With Range("N46,O46,AN52:AO58,AQ52:AT58")
  .Font.ColorIndex = 2                           'Schriftfarbe
  .Borders(xlEdgeLeft).ColorIndex = 2            'Rahmen links
  .Borders(xlEdgeRight).ColorIndex = 2           'Rahmen rechts
  .Borders(xlEdgeBottom).ColorIndex = 2          'Rahmen unten
  .Borders(xlInsideVertical).ColorIndex = 2      'Rahmen innen vertikal
  .Borders(xlInsideHorizontal).ColorIndex = 2    'Rahmen innen horizontal
  .Borders(xlTop).ColorIndex = 2                 'Rahmen oben
End With

End Sub

Sub schwarz()

With Range("N46,O46,AN52:AO58,AQ52:AT58")
  .Font.ColorIndex = 1                           'Schriftfarbe
  .Borders(xlEdgeLeft).ColorIndex = 1            'Rahmen links
  .Borders(xlEdgeRight).ColorIndex = 1           'Rahmen rechts
  .Borders(xlEdgeBottom).ColorIndex = 1          'Rahmen unten
  .Borders(xlInsideVertical).ColorIndex = 1      'Rahmen innen vertikal
  .Borders(xlInsideHorizontal).ColorIndex = 1    'Rahmen innen horizontal
  .Borders(xlTop).ColorIndex = 1                 'Rahmen oben
End With

End Sub

Gruß

M.O.

...