Clever-Excel-Forum

Normale Version: kein Text in Zelle dann Farbe von Zelle ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Tag zusammen,

ich habe ein simples Problem, was mir selber leider riesen groß vorkommt.

Also ich habe 5 verschiedene Zellen, die von anderen Parametern abhängig sind.
Es kommt dann also auch vor, dass dort #NV steht, was auch kein Problem ist, nur das sieht leider nicht schön aus.
Meine Aufgabe ist, wenn diese #NV steht, soll dies ausgeblendet werden.

Mein Code
Code:
Private Sub Worksheet_Change(ByVal Target as Range) 

If Cells(30, 3).Text = "#NV" Then
Code:
        Worksheets("1").Range("C30").Font.Color = RGB(191, 191, 191)
Code:
     ElseIf Cells(30, 3).Text = "" Then
Code:
        Worksheets("1").Range("C30").Font.Color = vbBlack
Code:
    End If
Code:
    If Cells(30, 4).Text = "#NV" Then
Code:
        Worksheets("1").Range("D30").Font.Color = RGB(191, 191, 191)
Code:
    ElseIf Cells(30, 4).Text = "" Then
Code:
        Worksheets("1").Range("D30").Font.Color = vbBlack
Code:
    End If
Code:
    If Cells(30, 5).Text = "#NV" Then
Code:
        Worksheets("1").Range("E30").Font.Color = RGB(191, 191, 191)
Code:
    ElseIf Cells(30, 5).Text = "" Then
Code:
        Worksheets("1").Range("E30").Font.Color = vbBlack
Code:
    End If
Code:
    If Cells(30, 6).Text = "#NV" Then
Code:
        Worksheets("1").Range("F30").Font.Color = RGB(191, 191, 191)
Code:
    ElseIf Cells(30, 6).Text = "" Then
Code:
        Worksheets("1").Range("F30").Font.Color = vbBlack
Code:
    End If
Code:
    If Cells(30, 7).Text = "#NV" Then
Code:
        Worksheets("1").Range("G30").Font.Color = RGB(240, 240, 240)
Code:
    ElseIf Cells(30, 7).Text = "" Then
Code:
        Worksheets("1").Range("G30").Font.Color = vbBlack
Code:
    End If

End Sub



Mit diesem Code habe ich es schon geschafft, dass sich das #NV grau verfärbt und somit nicht mehr sichtbar ist. Das Problem ist jetzt aber, wenn ein X-beliebiger Text drin steht (Text in Zelle verändert sich) soll diese wieder schwarz werden.
Also grob gesagt, wenn in der Zelle nicht #NV steht, soll die Schrift schwarz sein, wenn nicht, wird die Farbe grau und somit unsichtbar, weil die Zelle grau ist.

Gruß ExcelVBAAnfänger
Hola,

und warum nimmst du nicht einfach die bedingte Formatierung dafür?

Gruß,
steve1da
Hi steve1da,

das habe ich schon versucht, aber leider hat es nicht geklappt. Vielleicht weil der Fehler #NV durch sVerweise ensteht?
Oder spielt das keine Rolle und ich war einfach zu doof?

Gruß
ExcelVBAAnfänger
Hola,

das würde man so abfragen:

=istfehler(A2)

Und dann die Schriftfarbe auf grau setzen. A2 natürlich durch die richtige Zelle ersetzen.

Gruß,
steve1da
Hallo,

(28.10.2020, 14:46)ExcelVBAAnfänger schrieb: [ -> ]Vielleicht weil der Fehler #NV durch sVerweise ensteht?

lass gar nicht erst zu, dass ein #NV erscheint. Formel für C30 z.B.: =WENNFEHLER(SVERWEIS(B30;F:G;2;0);"")

Gruß Uwe
Hallo zusammen,

der Fehler entsteht zwangsweise bei mir im Tool, also da ist nicht zu rütteln.

Aber danke für eure Hilfe, habe es jetzt doch mit Bedingter Formatierung geschafft, habe erst jetzt gesehen, dass man dort auch einfach auf Fehler einstellen kann.

Gruß ExcelVBAAnfänger
Hallo zusammen,

habe jetzt leider eine neue Sache.

Ist es möglich, wenn in einer Zeile z.B. D11 der Fehler #NV steht, dass man nicht nur die Zelle ``unsichtbar´´ macht, sondern die komplette Reihe ausblendet?
Und was für einen Code bräuchte man?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(11, 3).Value = SpecialCells(xlCellsTypeFormulas, 16) Then
Rows("11").EntireRow.Hidden = True
ElseIf Cells(11, 3).Value <> SpecialCells(xlCellsTypeFormulas, 16) Then
Rows("11").EntireRow.Hidden = False
End If
If Cells(12, 3).Value = "#NV" Then
Rows("12").EntireRow.Hidden = True
ElseIf Cells(12, 3).Value <> "#NV" Then
Rows("12").EntireRow.Hidden = False
End If

End Sub


Habe es mit meinen beschränkten VBA Kenntnissen so ausprobiert, hatte auch 2 Ideen, aber mit beiden leider gescheitert.

Gruß
ExcelVBAAnfänger
Hallo,

bitte nicht jede einzelne Codezeile in Codetags setzen.