Obiectul și programul de lucru cu celule mijloace VBA

Object Excel.Range, programul de lucru cu celule si intervale (seturi) celule VBA înseamnă crearea Excel.Range obiect proprietăți, metode și evenimente obiect Excel.Range







Poate cel mai frecvent utilizate obiect în ierarhia modelului obiect Excel - un obiect Range. Acest loc poate fi o singură celulă, mai multe celule (inclusiv celule necontigue sau seturi de celule neadiacenți) sau o foaie. Dacă în Word, puteți utiliza pentru a introduce date ca interval de obiect, iar selectarea obiectelor, în Excel totul se reduce la gama obiect:

  • în cazul în care aveți nevoie pentru a introduce date într-o celulă, sau formatați-l, aveți nevoie pentru a obține obiectul Range, reprezentând celula;
  • dacă vrei să faci ceva cu care celulele selectate, aveți nevoie pentru a obține obiectul Range, reprezentând alocarea;
  • dacă aveți nevoie doar de ceva de-a face cu un grup de celule, prima acțiune a ta - a lua din nou obiectul Range, care reprezintă grupul de celule.
  • cel mai simplu și cel mai evident - pentru a profita de proprietate Range. Această caracteristică este prevăzută pentru obiecte de aplicare, foaie de lucru, iar intervalul de obiect (dacă vă decideți să creați o nouă gamă bazată pe deja existente). De exemplu, pentru a primi o referință la obiectul Range, reprezentând celula A1, puteți:

Dim Ca Gama de portocali

Set = portocaliu foi de lucru ( "Sheet1"). Range ( "A1")

Iar gama de celule A1 la D10 - după cum urmează:

Dim Ca Gama de portocali

Set = portocaliu foi de lucru ( "Sheet1") Range ( "A1: D10").

Odată cu utilizarea proprietăților obiectului Range Range ar trebui să fie foarte atent. Faptul că Excel creează un obiect Range pe baza foii virtuale cu propria numerotare. Prin urmare, următorul cod:

Set oRange1 = Worksheets ( "Sheet1"). Range ( "C1")

Set oRange2 = oRange1.Range ( "B1")

20 nu prevede o valoare în celula B1 așa cum se poate înțelege din cod, și în celula D1 (adică B1 în ceea ce privește foaia virtuală care începe cu C1).

  • a doua metodă - utilizează proprietatea Cells. Oportunități pentru această proprietate este mai puțin - ne putem întoarce gama, constând dintr-o singură celulă. Dar putem folosi o sintaxă mai convenabilă (în ceea ce privește transmiterea variabilelor muta în orice direcție, la orice număr de celule, etc.). De exemplu, pentru a obține o referință la celula D1 cod tip poate fi utilizat:

Dim Ca Gama de portocali

Set PORTOCALIU = Worksheets ( "Sheet1"). Celulele (1, 4)

Pentru a obține gama, format din câteva celule, este convenabil să se utilizeze proprietățile Range și celule împreună:

Set PORTOCALIU = Range (Cells (1, 1), celule (5, 3))

  • a treia cale - pentru a profita de numeroasele proprietăți ale obiectului Range, care vă permit să modificați intervalul de curent, sau creați-l pe baza unui nou. Aceste proprietăți vor fi discutate mai jos.

De obicei, după celula dorită este găsit, este necesar să se scrie ceva. În acest scop, utilizați proprietatea valoare, de exemplu:

oRange.Value = „Valoarea mea“

Deoarece obiectul Range din punct de vedere funcțional este foarte important ca proprietatile si metodele este foarte mult (și pentru lucru confortabil în Excel trebuie să știe). Mai jos sunt unele dintre proprietățile cele mai upotrebimo:

sColumnName = Mid (oRange.Address, 2, (Instr (2, oRange.Address, "$") - 2))

Un număr de linie - asa.

sRowNumber = Mid (oRange.Address, (Instr (2, oRange.Address, "$") + 1))

La prima vedere pare complicat, dar este de fapt foarte simplu - pentru numele coloanei pe care tocmai ia tot ce avem este între primul semn dolar (este suntem întotdeauna primul caracter), iar al doilea, și de a lua toate numerele rândurilor care urmărim al doilea semn dolar. Găsiți acest al doilea semn dolar poate fi construit folosind funcția INSTR (), și să ia numărul corect de caractere incepand de la oricare este de a utiliza funcția incorporată Mid ().

  • AllowEdit - această proprietate este read-only, pentru a stabili dacă utilizatorul poate edita această celulă (set de celule) pe lista protejată. Folosit pentru inspecții.
  • Domenii - proprietate extrem de importantă. Faptul că, după cum sa menționat deja, obiectul Range poate consta din seturi de celule neadiacente. Multe dintre metodele aplicate pentru astfel de benzi sau pur și simplu un comportament imprevizibil al returna o eroare. Zonele de proprietate vă permite să rupă aceste intervale personalizate la un set standard. Astfel, au creat obiecte din gama vor fi plasate în zonele de colectare. Această proprietate poate fi folosit pentru a verifica gama „non-standard“:

Dacă Selection.Areas.Count> Apoi 1

Debug.Print „rază de acțiune din zonele necontigue“

Dim portocal, oRange2 Ca Gama

Set PORTOCALIU = Range (Cells (2, 2), celule (5, 3))

Set oRange2 = oRange.Cells (1, 1) „A1 În loc să obținem o referire la B2

Debug.Print oRange2.Address' Deci, este

Exact aceleași caracteristici în proprietățile rând și rânduri, coloane și coloane.

  • Caractere - o proprietate ușor în căutarea vă permite să rezolve o problemă dificilă: cum să modificați (sau format text) al textului într-o celulă, fără a afecta restul datelor. De exemplu, pentru a introduce textul în celula A1, și de a schimba culoarea primei litere, puteți folosi codul






Dim Ca Gama de portocali

Set = Intervalul de portocali ( "A1")

oRange.Value = "My Text"

oRange.Characters (1, 1) .Font.Color = vbRed

Dacă aveți nevoie doar pentru a schimba o valoare, este mai bine să utilizeze proprietatea Value - în al treilea rând al exemplului.

  • Count - returnează numărul de celule într-un interval. Acesta poate fi utilizat pentru inspecții.
  • CurrentRegion - o caracteristică foarte convenabil, care poate fi util, de exemplu, atunci când copiați date / export primite de la o sursă externă (atunci când mult va aceste date, am inițial necunoscute). Se returnează un obiect Range care reprezintă o gamă înconjurat de celule goale (care este zona non-gol care conține sursa gama / celulă). De exemplu, să aloce toate zonele non-gol în jurul valorii de celula activă, puteți folosi codul
  • Dependents - permite obținerea unor site-uri Range (probabil inclusiv o regiune neadiacente) care depind de domeniul inițial de celule. Acesta funcționează numai pentru foaia curentă - linkuri către pagini externe care proprietatea nu este urmărită. De exemplu, pentru a selecta toate celulele, în funcție de activitatea, puteți folosi codul
  • Foi de lucru ( "Sheet1"). Activează
  • ActiveCell.Dependents.Select
  • End - alte proprietăți utilizate în mod obișnuit. Acesta vă permite să obțineți Range obiect, reprezintă ultima celulă din gama originală. La o parte vor fi luate în considerare ultima celulă, poate fi determinată folosind parametrul transmis.
  • Erori - proprietate care, prin Erori de colectare asigură accesul la obiectele de eroare, reprezentând erorile detectate în intervalul.
  • Font - la fel ca în Word, această proprietate vă permite să aibă acces la un obiect Font, cu care puteți personaliza caracteristicile de formatare a textului în celulă (culoare, font, dimensiunea fontului, etc.)
  • FormatConditions - posibilitatea de a crea propriul lor obiect care reprezintă proiectarea variantei de celule, care pot fi apoi aplicate la diferite celule și intervale.
  • Formula - una dintre cele mai importante proprietăți ale obiectului Range. Și este disponibil pentru a citi și a scrie. Dacă utilizați pentru a citi, returnează textul formulei prevăzute în celula (mai degrabă decât valoarea calculată), dacă este utilizat pe o înregistrare, vă permite să scrie formula în celulă. Dacă utilizați această proprietate pentru gama, care include mai multe celule, formula este scris pe toată gama de celule. Exemplu de aplicare a acestei proprietăți ar putea arata ca:
  • Proprietatea FormulaLocal. ca AddressLocal, vă permite să facă ajustări pentru anumite numere de celule în versiunea localizată a Excel (pentru versiunea română Excel nu este necesar).
  • FormulaHidden - posibilitatea de a ascunde formula în intervalul de la utilizator. Acesta funcționează numai pe foaia protejate.
  • HasFormula - verifica prezența unei game de valori calculate (formule).
  • Ascuns - gama ascunse. Va funcționa doar dacă intervalul include cel puțin un rând sau o coloană complet, în caz contrar returnează o eroare.
  • Interior - o altă proprietate asociată cu formatare. Practic permite să picteze zona de celule.
  • Articol - permite să se obțină un alt interval obiect, care este determinată de deplasarea gamei sursă.
  • Blocat - această caracteristică vă permite să blocheze o serie de celule din foaia de protecție.
  • Numele - posibilitatea de a obține o referință la un obiect special numit gama de nume. Display-ul grafic cu capacitățile sale pot fi găsite folosind meniul Insert -> Name. Acesta vă permite să accesați intervalele și formulele de nume și este oarecum amintește de funcționalitatea marcajului obiect în Word.
  • În continuare - pentru a trece la celula următoare. Dacă foaia nu este protejată, atunci celula următoare este considerată o celulă la dreapta, dacă sunt protejate - următoarele celule non-interblocate.
  • NumberFormat - abilitatea de a seta unul dintre formatele predefinite pentru numere. Corespunzător numărul posibil de file în formatul de meniu -> Celule pe ecran grafic.
  • Offset - această caracteristică vă permite să obțineți un nou obiect Range cu un anumit decalaj față de original. De exemplu, pentru a primi o celulă cu un decalaj de trei celule ascendente din stânga și din trei celule similare pot utiliza codul
  • Orientarea caracteristică vă permite să orienteze textul în celule. Indică unghiul de înclinare în grade. De exemplu, pentru a plasa textul pe diagonală, puteți folosi codul
  • Pagebreak - această proprietate este de obicei folosit pentru a insera în mod programatic întreruperi de pagină. Aplicarea ei ar putea arăta astfel:
  • toate proprietățile care încep cu pivot .... sunt atribuite pentru a lucra cu PivotTable obiect (PivotTable). Lucrul cu acesta va fi discutat mai jos.
  • QueryTable - aceasta este o caracteristică foarte importantă vă permite să conectați la obiect QueryTable - primit de la o sursă externă de date. Această proprietate pentru obiect Range vă permite să obțineți un QueryTable de referință obiect. care este în acest interval. Mai multe informații despre obiectul QueryTable vor fi discutate mai jos.
  • Gama - această proprietate, așa cum sa menționat mai sus, pentru a crea o nouă gamă bazată pe cea existentă. Trebuie amintit despre caracteristicile numerelor de celule în acest caz.
  • Redimensionarea - capacitatea de a schimba intervalul de curent. De exemplu, în creștere într-o singură coloană în jos dreapta și un rând s-ar putea arata astfel:

oRange.Resize (oRange.Rows.Count + 1, oRange.Columns.Count + 1); selectați

  • ShrinkToFit - această funcție vă permite să reglați automat dimensiunea textului în intervalul, astfel încât se potrivesc text în lățimea coloanei.
  • Stil - Această proprietate vă permite să se întoarcă stilul de obiect, reprezentând stilul pentru intervalul specificat. Afișajul grafic care vă permite să facă stilul de obiect, se poate face prin intermediul meniului Format -> Style.
  • Textul - posibilitatea de a primi valoarea primei celule interval de la o valoare de tipul String. Pentru obiectul Range, această proprietate este read-only.
  • Validarea - această caracteristică vă permite să se întoarcă validarea obiect, cu care puteți configura intervalul de date de intrare de testare.
  • Valoarea - proprietatea cea mai frecvent utilizate obiectului Range. Aceasta permite să se obțină sau să atribuie o valoare (numerică, text sau orice alte celule) gama. În mod similar, în același scop proprietatea Value2, singura diferență - această caracteristică nu suportă tipul de date valutar, și data.
  • WrapText - opțiune pentru a activa / dezactiva traducerea textului de pe linia de mai jos într-o serie de celule.

Acum - despre metodele de obiect Range:

Set oRange2 = oRange.SpecialCells (xlCellTypeBlanks)

2. Selectați Orange „Verificați dacă acest

  • Subtotal () permite calcularea valorii totale pentru intervalul (puteți alege funcția acumulator și mulți alți parametri) metoda.
  • Tabel () metoda permite crearea unui tabel bazat pe coloană transmise, linie și funcțiile care urmează să fie utilizate pentru a calcula celula tabel. Exemplu documentației pentru această metodă pentru a genera automat tabelul de multiplicare.
  • TextToColumns () - metoda complexa, care permite să se împartă coloanele în intervalul de mai multe coloane, în conformitate cu un anumit algoritm. Primește o multitudine de parametri opționali.