Palyginkite „Excel VBA“ diapazonus - paprastos „Excel“ makrokomandos

Turinys

Žemiau apžvelgsime programą Excel VBA kad lygina atsitiktinai parinktas diapazonai ir pabrėžia unikalias ląsteles. Jei dar nesate susipažinę su sritimis, pirmiausia rekomenduojame perskaityti šį pavyzdį.

Situacija:

Pastaba: vienintelė unikali vertė šiame pavyzdyje yra 3, nes visos kitos vertės yra dar bent vienoje srityje. Norėdami pasirinkti diapazoną („B2: B7, D3: E6, D8: E9“), laikykite nuspaudę „Ctrl“ ir pasirinkite kiekvieną sritį.

Įdėkite komandų mygtuką į savo darbalapį ir pridėkite šias kodo eilutes:

1. Pirmiausia deklaruojame keturis diapazono objektus ir du kintamuosius, kurių tipas yra Integer.

Naudoti kaip diapazoną, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Su pasirinktu diapazonu inicializuojame „Range“ objekto diapazoną „rangeToUse“.

Set rangeToUse = Pasirinkimas

3. Pridėkite eilutę, kuri keičia visų langelių fono spalvą, į „Neužpildyti“. Taip pat pridėkite eilutę, kuri pašalina visų langelių kraštus.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone

4. Informuokite vartotoją, kai jis pasirenka tik vieną sritį.

Jei Selection.Areas.Skaičius <= 1 Tada
MsgBox "Pasirinkite daugiau nei vieną sritį."
Kitas
Pabaiga Jei

Kitos kodo eilutės (5, 6 ir 7) turi būti pridėtos tarp Else ir End If.

5. Nuspalvinkite pasirinktų sričių ląsteles.

rangeToUse.Interior.ColorIndex = 38

6. Ribokite kiekvieną sritį.

Už kiekvieną singleArea In rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Svoris: = xlThin
Kitas singlasArea

7. Likusi šios programos dalis atrodo taip.

Jei i = 1 Į diapazoną Naudoti.Aplinkos.Skaičius
Jei j = i + 1 Į rangeToUse.Areas.Count
Kiekvienai langeliui1 In rangeToUse.Areas (i)
Kiekvienai langeliui2 diapazoneToUse.Areos (j)
Jei langelis1.Vertė = ląstelė2.Vertybė Tada
ląstelė1.Interior.ColorIndex = 0
ląstelė2.Interior.ColorIndex = 0
Pabaiga Jei
Kitas langelis2
Kitas langelis 1
Kitas j
Kitas I.

Paaiškinimas: tai gali atrodyti šiek tiek pribloškianti, tačiau tai nėra taip sunku. rangeToUse.Areas.Count lygus 3, todėl pirmosios dvi kodo eilutės sumažėja iki For i = 1 iki 3 ir j = i + 1 iki 3. Jei i = 1, j = 2, „Excel VBA“ lygina visas pirmosios srities reikšmes su visomis antrosios srities reikšmėmis. Jei i = 1, j = 3, „Excel VBA“ lygina visas pirmosios srities reikšmes su visomis trečiosios srities reikšmėmis. Jei i = 2, j = 3, „Excel VBA“ lygina visas antrosios srities reikšmes su visomis trečiosios srities reikšmėmis. Jei vertės yra vienodos, abiejų langelių fono spalva nustatoma kaip „Neužpildyti“, nes jos nėra unikalios.

Rezultatas, kai lape spustelėsite komandų mygtuką:

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave