Aflarea locului în care se află o selecție într-un tabel

Pe lângă stabilirea faptului că selecția este într-un tabel, aveți posibilitatea să utilizați proprietatea Information pentru a afla alte informații care pot fi utile atunci când lucrați cu tabele folosind un obiect Range sau un obiect Selection.

După ce ați stabilit că selecția se află într-un tabel (probabil utilizând argumentul wdWithinTable), verificați dacă selecția se află la un marcator de sfârșit de rând, și nu într-o celulă. Dacă selecția se află la un marcator de sfârșit de rând, anumite acțiuni eșuează. De exemplu, încercarea de a selecta celula sau coloana curentă nu reușește, deoarece selecția se află în afara oricărei celule sau coloane, dar încercarea de a selecta rândul curent reușește.

Pentru a verifica dacă selecția este la marcatorul de sfârșit de rând, utilizați argumentul AtEndOfRowMarker pentru proprietatea Information. Următoarea instrucțiune mută selecția cu un caracter la stânga (în ultima celulă din același rând), dacă selecția este la sfârșitul marcatorului de rând:

If Selection.Information(wdAtEndOfRowMarker) = True Then _
Selection.MoveLeft Unit:=wdCharacter, Count:=1

Dacă selecția conține marcatorul de sfârșit de rând, în loc să fie o selecție restrânsă (un punct de inserare) înainte de marcator, argumentul wdAtEndOfRowMarker returnează False. Pentru a evita un marcator selectat de sfârșit de rând care cauzează probleme în procedurile dvs., restrângeți selecția dacă nu este restrânsă înainte de a verifica dacă se află la marcatorul de sfârșit de rând. Următoarele declarații fac acest lucru, utilizând o variabilă numită curSel pentru a restabili selecția care se restrânge, cu excepția cazului în care restrângerea selecției lasă selecția la un marcator de sfârșit de rând:

Dim curSel
With Documents("Communications.docm")
  If Selection.Type <> wdSelectionIP Then 
    Set curSel = Selection.Range Selection.Collapse Direction:=wdCollapseStart 
  End If
  If Selection.Information(wdAtEndOfRowMarker) = True Then
  Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdMove
  Else
    If curSel <> "" Then 
      curSel.Select 
      Set curSel = Nothing 
  End If 
End With

După ce ați stabilit că selecția se află cu siguranță într-un tabel, puteți prelua șase informații utile despre tabel:

  • wdStartOfRangeColumnNumber returnează numărul coloanei în care se încadrează începutul selecției sau al intervalului. Următoarea declarație selectează coloana în care începe selecția curentă:
  Selection.Tables(1).Columns(Selection.Information _ 
    (wdStartOfRangeColumnNumber)).Select
  • wdEndOfRangeColumnNumber returnează numărul coloanei în care cade sfârșitul selecției sau al intervalului. Următoarele declarații șterg coloana în care se termină intervalul testRange dacă intervalul este mai mare decât lățimea unei coloane:
With testRange
  If .Information(wdStartOfRangeColumnNumber) <> _ 
    .Information(wdEndOfRangeColumnNumber) Then _ 
    .Tables(1).Columns(.Information _
    (wdEndOfRangeColumnNumber)).Delete
End With
  • wdStartOfRangeRowNumber returnează numărul rândului în care se încadrează începutul selecției sau al intervalului.
  • wdEndOfRangeRowNumber returnează numărul rândului în care se încadrează sfârșitul selecției sau al intervalului.
  • wdMaximumNumberOfColumns returnează cel mai mare număr de coloane de pe orice rând din selecție sau interval.
  • wdMaximumNumberOfRows returnează cel mai mare număr de rânduri din selecția sau zona specificată din tabel.