Vergleichen Rang in Excel VBA
Im Folgenden werden wir ein Programm in Excel VBA suchen, die zufällig ausgewählte Bereiche und Highlights Zellen vergleicht, die einzigartig sind. Wenn Sie nicht vertraut mit Link sind: / vba-Beispiele-Bereiche-Sammlung [Bereiche]
noch, empfehlen wir Ihnen, zuerst dieses Beispiel zu lesen.
Situation:
Hinweis: der einzige eindeutige Wert in diesem Beispiel ist die 3, da alle anderen Werte in mindestens einen weiteren Bereich auftreten. So wählen Sie Range ( „B2: B7, D3: E6, D8: E9“), halten Sie die Strg-Taste und jeden Bereich auswählen.
Platzieren Sie eine Befehlstaste auf dem Arbeitsblatt und fügen Sie die folgenden Codezeilen:
-
Zuerst erklären wir vier Range-Objekte und zwei Variablen vom Typ Integer.
Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
-
Wir initialisieren das Range-Objekt rangeToUse mit dem gewählten Bereich.
Set rangeToUse = Selection
-
die Zeile hinzufügen, die die Hintergrundfarbe aller Zellen auf ‚No Fill‘ ändert. Fügen Sie auch die Linie, die die Grenzen aller Zellen entfernt.
Cells.Interior.ColorIndex = 0 Cells.Borders.LineStyle = xlNone
Informieren Sie den Benutzer 4. wenn er oder sie wählt nur einen Bereich.
If Selection.Areas.Count <= 1 Then MsgBox "Please select more than one area." Else End If
Die nächsten Codelinien (bei 5, 6 und 7) zwischen Else und End If hinzugefügt werden.
-
Farbe der Zellen der ausgewählten Bereiche.
rangeToUse.Interior.ColorIndex = 38
Border jeden Bereich 6.
For Each singleArea In rangeToUse.Areas singleArea.BorderAround ColorIndex:=1, Weight:=xlThin Next singleArea
-
Der Rest dieses Programm sieht wie folgt aus.
For i = 1 To rangeToUse.Areas.Count For j = i + 1 To rangeToUse.Areas.Count For Each cell1 In rangeToUse.Areas(i) For Each cell2 In rangeToUse.Areas(j) If cell1.Value = cell2.Value Then cell1.Interior.ColorIndex = 0 cell2.Interior.ColorIndex = 0 End If Next cell2 Next cell1 Next j Next i
Erläuterung: Dies kann ein wenig aussehen überwältigend, aber es ist nicht so schwierig. rangeToUse.Areas.Count gleich 3 ist, so dass die ersten beiden Codelinien zu verringern, um i 1 bis 3 = und für j = i + 1 bis 3. Für i = 1, j = 2 vergleicht Excel VBA alle Werte des ersten Bereichs mit allen Werten des zweiten Bereichs. Für i = 1, j = 3, vergleicht Excel VBA alle Werte des ersten Bereichs mit allen Werten des dritten Bereichs. Für i = 2, j = 3, vergleicht Excel VBA alle Werte des zweiten Bereichs mit allen Werten des dritten Bereichs. Wenn die Werte gleich sind, setzt er die Hintergrundfarbe der beiden Zellen zu ‚Keine Füllung‘, weil sie nicht eindeutig sind.
Ergebnis, wenn Sie auf das Befehlsschaltflächen auf dem Blatt klicken: