Нижче ми розглянемо програму в Excel VBA що порівнює випадково вибрано діапазонів і виділяє унікальні клітини. Якщо ви ще не знайомі з областями, ми настійно рекомендуємо вам спочатку прочитати цей приклад.
Ситуація:
Примітка: єдиним унікальним значенням у цьому прикладі є 3, оскільки всі інші значення зустрічаються принаймні ще в одній області. Щоб вибрати діапазон ("B2: B7, D3: E6, D8: E9"), утримуйте Ctrl і виберіть кожну область.
Помістіть команду на робочому аркуші та додайте такі рядки коду:
1. По -перше, ми оголошуємо чотири об’єкти Range та дві змінні типу Integer.
Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
2. Ми ініціалізуємо об'єкт Range rangeToUse вибраним діапазоном.
Set rangeToUse = Вибір
3. Додайте рядок, який змінює колір фону всіх клітинок, до "Без заливки". Також додайте рядок, який видаляє межі всіх клітинок.
Комірки.Інтер'єр.КолірІндекс = 0
Осередки.Кордюри.Лінійний стиль = xlНі
4. Повідомте користувача, коли він або вона вибирає лише одну область.
Якщо Selection.Areas.Count <= 1 Тоді
MsgBox "Виберіть кілька областей."
Інакше
Закінчити Якщо
Наступні рядки коду (на 5, 6 і 7) потрібно додати між Else та End If.
5. Розфарбуйте клітинки виділених областей.
rangeToUse.Interior.ColorIndex = 38
6. Облямовуйте кожну область.
Для кожної окремої області в діапазоніToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Вага: = xlТонкий
Наступна сингл -зона
7. Решта цієї програми виглядає наступним чином.
Для i = 1 Для діапазонуToUse.Areas.Count
Для j = i + 1 Для діапазонуToUse.Areas.Count
Для кожної клітинки1 У rangeToUse.Areas (i)
Для кожної клітинки2 У rangeToUse.Areas (j)
Якщо cell1.Value = cell2.Value Тоді
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Закінчити Якщо
Наступна клітина 2
Наступна клітина 1
Далі j
Далі i
Пояснення: це може виглядати дещо переважним, але це не так складно. rangeToUse.Areas.Count дорівнює 3, тому перші два рядки коду зменшуються до For i = 1 до 3 і For j = i + 1 до 3. Для i = 1, j = 2, Excel VBA порівнює всі значення першої області з усіма значеннями другої області. Для i = 1, j = 3 Excel VBA порівнює всі значення першої області з усіма значеннями третьої області. Для i = 2, j = 3 Excel VBA порівнює всі значення другої області з усіма значеннями третьої області. Якщо значення однакові, колір фону обох клітинок встановлюється на «No Fill», оскільки вони не є унікальними.
Результат, коли ви натискаєте кнопку команди на аркуші: