Der folgende Code bestimmt wird, um die Zellebedingte Formatierung auf einen Bereich Anwenden anstelle der Einzelzelle
- zu formatieren, wenn der eingegebene Wert No ist und
Wenn der Wert der Zelle in derselben Reihe und bevor einige Spalten in dem
sshDevices
ArrayFunction sshProblem(rng As Range) As Boolean Dim portStatus As String portStatus = rng.Value Dim deviceType As String deviceType = Cells(ActiveCell.Row, 3).Value Dim sshDevices As Variant sshDevices = Array("linux", "vmw", "docker", "unix") If StrComp(portStatus, "No") = 0 Then If StrComp(deviceType, sshDevices(1)) = 0 Then sshProblem = True End If End If End Function
aufgeführt Denn jetzt bin ich nur den Wert von device vergleichen gegen das zweite Element im Array. Die Formatierung funktioniert ordnungsgemäß, wenn der Gerätetyp übereinstimmt und wenn der Inhalt Nein ist. Das Problem ist, dass wenn der Inhalt Nein ist und der Gerätetyp nicht übereinstimmt, alle Zellen in der Spalte ihr Format verlieren. Zum Beispiel:
Ich trete „Nein“ in Zeile 8 und die Zelle richtig mit rosaem Hintergrund formatiert ist:
Dann mache ich das gleiche mit den Spalten 9 und 10:
Aber wenn Ich komme zu 10, ich gebe "Nein" in die Zelle ein, aber jetzt stimmt der Wert der vorherigen Zelle "ubuntu" nicht mit dem Wert von Position 1 des Arrays überein, also würde ich erwarten, dass die Zelle keinen rosa Hintergrund hat, jedoch alle frühere Zellen verlieren ihren Hintergrund, wenn ich "Nein" eingib:
Die Einstellungen für bedingte Formatierung wie folgt aussehen (die Spalte Buchstaben ‚I‘):
Ich weiß nicht, ob mein Problem (rng As Range)
wird behauptet oder wenn es die Art, wie ich die Einrichtung Regel für bedingte Formatierung Ideen?
Vielen Dank. Ich habe mir das Application.Caller.Row ausgeliehen und es anstelle von ActiveCell eingefügt, gespeichert und es erneut versucht, kein Glück. Dann habe ich die 2 If-Anweisung mit Ihrem "Not IsError (Application.Match (deviceType, sshDevices, 0))" Teil ersetzt und das hat den Trick gemacht. Du schaukelst. –