Crearea și utilizarea intervalelor (Ranges)

În Word, elementul Range este o zonă continuă a unui document cu un punct de plecare și un punct de sfârșit definite. De exemplu, dacă definiți un interval care constă din primele două paragrafe dintr-un document specificat, punctul de plecare al intervalului se află la începutul primului paragraf, iar punctul său final se află la sfârșitul celui de-al doilea paragraf (după marcajul de paragraf).

Deși este asemănător cu Selection, Range este mai flexibil. Și, este important să rețineți că Range are nume în cod, astfel încât în orice moment să puteți face referire la el folosind numele atribuit. La un moment dat, pot exista mai multe intervale Range, dar nu poate fi decât o singură selecție și Selection nu are nume.

Utilizarea tipică a intervalelor (Range) din Word VBA este similară cu modul în care utilizați marcajele (bookmarks) atunci când lucrați interactiv cu Word: pentru a marca o locație dintr-un document pe care doriți să o puteți accesa rapid sau manipula cu ușurință.

Ca și marcajul (bookmark) din document, o zonă poate conține orice cantitate de text dintr-un document, de la un singur caracter la întregul conținut al documentului. Range poate avea același punct de plecare și punct de sfârșit, deci nu are conținut și îl face, de fapt, un semn invizibil în document pe care îl puteți utiliza pentru a insera text. (Acest lucru este similar cu o selecție restrânsă.)

După ce ați creat un interval (Range), aveți posibilitatea să consultați conținutul acestuia sau să inserați conținut nou în acesta sau să îl formatați, toate utilizând metodele și proprietățile obiectului Range.

Deosebirile dintre elementul RANGE și elementul BOOKMARK

Principala diferență dintre Range și Bookmark este că durata de viață pentru Range este limitată la procedura VBA care o definește. După terminarea procedurii de executare, Range dispare. În schimb, Bookmark rămâne. Acesta este salvat cu documentul sau șablonul care îl conține și poate fi accesat în orice moment (indiferent dacă se execută sau nu o procedură).

Definirea unui Range cu nume

Pentru a crea un obiect Range, utilizați o instrucțiune Set și fie metoda Range (cu obiectul Document), fie proprietatea Range pentru un alt obiect — de exemplu, obiectul Selection, colecția Paragraph sau un obiect Paragraph care clasifică Range ca proprietate. Range este întotdeauna o proprietate a cuiva. Înainte de a exista Range, vă puteți gândi la Range ca la o acțiune care creează zona, deci este o metodă. Cu toate acestea, după ce există Range, este în mod clar o proprietate, cum ar fi culoarea unui obiect. După cum am spus, clasificarea obiectelor este o lucrare în curs de desfășurare. Și probabil că va fi așa întotdeauna.

Sintaxa pentru utilizarea metodei Range este:

Set RangeName = Document.Range(Start, End)

Aici, RangeName este numele pe care îl atribuiți intervalului, iar Start și End sunt argumente opționale care specifică punctele de început și de sfârșit ale intervalului.

Sintaxa pentru utilizarea proprietății Range pe un obiect este:

Set RangeName = object.Range

De exemplu, următoarea instrucțiune utilizează proprietatea Range a colecției Paragraph pentru a defini un interval numit FirstPara care constă din primul paragraf al documentului activ. Această declarație nu utilizează argumentele Start and End, deoarece punctul de plecare și punctul de sfârșit al paragrafului sunt înțelese în mod clar:

Set FirstPara = ActiveDocument.Paragraphs(1).Range

Următorul cod modifică în majuscule primele trei cuvinte de la începutul unui document:

Dim InitialCaps As Range
Set InitialCaps = ActiveDocument.Range _
(Start:=ActiveDocument.Words(1).Start, _
End:=ActiveDocument.Words(3).End)
InitialCaps.Case = wdUpperCase

Prima comandă definește un obiect Range numit InitialCaps. A doua comandă atribuie InitialCaps unui interval din documentul activ, de la începutul primului cuvânt până la sfârșitul celui de-al treilea cuvânt. A treia comandă modifică în majuscule caracterele obiectului InitialCaps al Range.

Deoarece InitialCaps este acum definit ca un obiect Range pe durata procedurii care îl declară, aveți posibilitatea să reveniți la intervalul InitialCaps și să-l manipulați mai târziu în procedură, dacă este nevoie.

Redefinirea unui interval - Range

Pentru a redefini o zonă pentru a o face să se refere la o altă parte a unui document, utilizați metoda SetRange. Sintaxa este după urmează:

  expression.SetRange(Start, End)

Aici, expression este o expresie necesară care returnează un obiect Range sau Selection, iar Start și End sunt argumente opționale care specifică punctele de început și de sfârșit ale intervalului.

De exemplu, următoarea instrucțiune redefinește intervalul numit InitialCaps, astfel încât acum se referă la primele două caractere ale documentului:

  InitialCaps.SetRange Start:=0, End:=2

De asemenea, puteți redefini Range reutilizând metoda Set, creând din nou intervalul de la zero.

Folosirea proprietății Duplicate pentru stocarea sau copierea formatarea

Aveți posibilitatea să utilizați proprietatea Duplicate pentru a stoca sau copia un element Range, astfel încât să îl puteți aplica la un alt interval. De exemplu, următoarele comenzi declară două intervale, Range1 și Range2; stocați duplicatul selecției curente în Range1; atribuiți la Range2 intervalul primului marcaj (bookmark) din documentul activ; și apoi se aplică la Range2 conținutul din Range1:

  Dim Range1 As Range, Range2 As Range
  Set Range1 = Selection.Range.Duplicate
  Set Range2 = ActiveDocument.Bookmarks(1).Range