12.06.2017, 09:44
Hallo Community!
Ich hoffe ihr könnt mir mal wieder helfen (:
Ziel ist es, eine definierte Farbe einem Feld zuzuordnen, je nachdem welche Kombination in Spalte G&I zu finden ist.
Ich habe es zu Beginn ganz klassisch mit unzähligen If-Anweisungen versucht. Dies hat auch geklappt, es war aber nicht die eleganteste Methode.
Dann habe ich hier den Tipp bekommen, den Code mithilfe von Arrays zu minimieren/ optimieren.
Dies klappt nun auch (fast) wunderbar.
Ich erhalte je nachdem welcher Excel-Version verwendet wird, in diesem Code einen Fehler:
In Excel 2010 funktioniert der Code wunderbar, in einer älteren version leider nicht (Citrix-Anwendung)
Es kommt vor, dass in G und/ oder I eine leere Zelle vorhanden ist. Vielleicht ist dies in meinem Code nicht ausreichend genug definiert.
Habt ihr eine Idee? Oder vielleicht sogar einen alternativen/ eleganteren Vorschlag, dass Ziel zu erreichen?
Mit Select-Case kriegt man das nicht hin, richtig? So wie ich das verstanden habe, ist Select-Case nur dafür gedacht, wenn nur 1 Wert untersucht wird. Hier werden ja zwei Werte/ Spalten untersucht.
Gesamter Code
Ich hoffe ihr könnt mir mal wieder helfen (:
Ziel ist es, eine definierte Farbe einem Feld zuzuordnen, je nachdem welche Kombination in Spalte G&I zu finden ist.
Ich habe es zu Beginn ganz klassisch mit unzähligen If-Anweisungen versucht. Dies hat auch geklappt, es war aber nicht die eleganteste Methode.
Dann habe ich hier den Tipp bekommen, den Code mithilfe von Arrays zu minimieren/ optimieren.
Dies klappt nun auch (fast) wunderbar.
Ich erhalte je nachdem welcher Excel-Version verwendet wird, in diesem Code einen Fehler:
Code:
If .Range("G" & Zeile).Value And .Range("I" & Zeile).Value <> "" Then
.Range("K" & Zeile).Interior.ColorIndex = arrMatrix(.Range("G" & Zeile).Value, .Range("I" & Zeile).Value)
In Excel 2010 funktioniert der Code wunderbar, in einer älteren version leider nicht (Citrix-Anwendung)
Es kommt vor, dass in G und/ oder I eine leere Zelle vorhanden ist. Vielleicht ist dies in meinem Code nicht ausreichend genug definiert.
Habt ihr eine Idee? Oder vielleicht sogar einen alternativen/ eleganteren Vorschlag, dass Ziel zu erreichen?
Mit Select-Case kriegt man das nicht hin, richtig? So wie ich das verstanden habe, ist Select-Case nur dafür gedacht, wenn nur 1 Wert untersucht wird. Hier werden ja zwei Werte/ Spalten untersucht.
Code:
Sub Colour()
Dim arrMatrix(1 To 5, 1 To 5) As String
Dim ZeileMax As Byte
Dim Zeile As Byte
arrMatrix(1, 1) = 4
arrMatrix(3, 1) = 4
arrMatrix(1, 4) = 6
arrMatrix(5, 1) = 6
arrMatrix(5, 2) = 3
arrMatrix(4, 5) = 3
With tblOne
ZeileMax = Sheets("tblOne").Cells(.Rows.Count, "B").End(xlUp).Row
For Zeile = 2 To ZeileMax
If .Range("G" & Zeile).Value And .Range("I" & Zeile).Value <> "" Then
.Range("K" & Zeile).Interior.ColorIndex = arrMatrix(.Range("G" & Zeile).Value, .Range("I" & Zeile).Value)
End If
Next Zeile
End With
End Sub