Hi
Ich habe ein Programm abgeändert. in dem ich eine Spalte (ursprünglich "B") nach Duplikaten absuche und diese mit verschiedenen Farben einfärbe.
Nun möchte ich dies mit Variablen variabler gestalten.
Ich möchte die Spalte über eine Eingabe festlegen und diese dann als Suchparameter einstellen.
Anbei der Unvollständige Code:
Sub Doppelte_markieren()
Dim lngZeile As Long
Dim lngEnde As Long
Dim strValue As String
Dim objDupList As Object
Dim arrFarben As Variant
Dim intFarben As Integer
Set xRg = Application.InputBox("please select the data range:", , xTxt, , , , , 8)
Spalte = xRg.Column
arrFarben = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56) 'Aufzählung der ColorIndex-Werte entsprechend anpassen
Set objDupList = CreateObject("Scripting.Dictionary") 'Liste der Duplikate (Key) mit ColorIndex (Item)
lngEnde = Cells(Rows.Count, Spalte).End(xlUp).Row
Bis dahin scheint es zu Funktionieren.
Der folgende Teil ist der den ich nicht verändern kann:
For lngZeile = 1 To lngEnde
strValue = Cells(lngZeile, Spalte).Text
If strValue <> "" Then 'Test Zelle nicht Leer
If Application.CountIf(Range("B2:B" & lngEnde), strValue) > 1 Then
If objDupList.Exists(strValue) Then
Cells(lngZeile, "B").Interior.ColorIndex = objDupList.Item(strValue)
Else
Cells(lngZeile, "B").Interior.ColorIndex = arrFarben(intFarben)
objDupList.Add strValue, arrFarben(intFarben)
intFarben = intFarben + 1
If intFarben > UBound(arrFarben) Then intFarben = 3
End If
End If
End If
Next
End Sub
Bei "If Application.CountIf(Range("B2:B" & lngEnde), strValue) > 1 Then"
müsste ich anstelle der Range("B2:B" & lngEnde) die Variable "Spalte" einbauen. durch die Cells Formatierung die ja erst die Zeile und dann die Spalte beschreibt, bekomme ich es nicht zusammen.
Bitte mit Erklärung auflösen.
Danke
|