Specifying Cell Coordinates
Cell ranges can be specified in various ways for the WksDocument Cells and Range methods:
[1] Cells("A1") is a one argument single cell
[2] Cells("A1:C5") is a one argument range of cells
[3] Cells("A:E) is a one argument range of whole-columns
[4] Cells("1:5") is a one argument range of whole-rows
[5] Cells(Range object) is a one argument range of cells
[6] Cells(1,"A") -or- Cells(1,1) is a two argument single cell
[7] Cells("A1","C5") is a two argument range of cells
[8] Cells(1,"A",5,"C") -or- Cells(1,1,5,3) is a four argument range of cells
Column ranges can be specified in various ways for the WksDocument Columns method:
[1] Columns(1,5) or ("A","E) is a two argument range of columns
[2] Columns(A:
[3] Columns("A1:E1") is a one argument range of columns [the row coordinates are ignored]
[4] Columns(Range object) is a one argument range of columns [the row coordinates are ignored]
[5] Columns("A5") is a one argument single column [the row coordinate is ignored]
[6] Columns(1) is a one argument single column
Row ranges can be specified in various ways for the WksDocument Rows method:
[1] Rows(1,5) is a two argument range of rows
[2] Rows("1:5") is a one argument range of rows
[3] Rows("A5:A10") is a one argument range of rows [the column coordinates are ignored]
[4] Rows(Range object) is a one argument range of rows [the column coordinates are ignored]
[5] Rows("A5") is a one argument single row [the column coordinate is ignored]
[6] Rows(1) is a one argument single row
Also, the Cells, Columns, and Rows methods work slightly differently when invoked on a WksRange object than when invoked on a WksDocument object. When invoked on a WksRange object, the coordinates are relative to the upper-left corner of the range. For example, Range.Cells(A1) refers to whatever the upper-left corner of the Range happens to be, like so:
Set Wks = Surfer.Documents.Add(srfDocWks)
Set RangeObject1 = Wks.Cells(C5:E10)
' RangeObject2 now contains the cell "C5"
Set RangeObject2 = RangeObject1.Cells("A1")
' RangeObject3 now contains the cell "C5"
Set RangeObject3 = RangeObject1.Cells(1,1)
' RangeObject4 now contains the cell "D6"
Set RangeObject4 = RangeObject1.Cells(2,2)
In addition, you can use a single numeric argument in the Range.Cells() method to sequentially access each cell in the range, like so:
' Note: RangeObject1 equals C5:E10
Set RangeObject5 = RangeObject1.Cells(1) ; cell "C5"
Set RangeObject6 = RangeObject1.Cells(2) ; cell "D5"
Set RangeObject7 = RangeObject1.Cells(3) ; cell "E5"
' There are three cells in the first row of RangeObject1.
' Cell #4 is in the second row…
Set RangeObject8 = RangeObject1.Cells(4) ; cell "C6"
Set RangeObject9 = RangeObject1.Cells(5) ; cell "D6"
Set RangeObject10 = RangeObject1.Cells(6) ; cell "E6"
' Cell #7 is in the third row…
Set RangeObject11 = RangeObject1.Cells(7) ; cell "C7"
There are some special cases when the WksRange objects’ Cells, Columns, and Rows methods are called. The behavior for these special cases is explained in these notes:
WksRange.Cells() Method:
[1] Coordinates are relative to the top, left of the current (base) range
[2] The returned range can extend beyond the original range
[3] Rows are limited to the original range if a whole-column sub-range is specified
[4] Columns are limited to the original range if a whole-row sub-range is specified
[5] Cells are indexed across and then down
Examples:
Item |
Base Range |
Specified Sub-Range |
Range Returned |
[1] |
Wks.Range(B10:C20). |
Cells("A1") |
"B10" |
[2] |
Wks.Range(B10:C20). |
Cells("A1:C30") |
"B10:D39" |
[3] |
Wks.Range(B10:C20). |
Cells("A:C") |
"B10:D20" |
[4] |
Wks.Range("B10:C20"). |
Cells("1:5") |
"B10:C14" |
[5] |
Wks.Range("B10:C20"). |
Cells(n) |
n=1 "B10", n=2 "C10", n=3 "B11", etc. |
WksRange.Rows Method
Columns are limited to the original range (the same as if a whole-row sub-range were supplied to the Range.Cells method).
Example:
Base Range |
Specified Sub-Range |
Range returned |
Wks.Range("B10:C20"). |
Rows("1:5") |
"B10:C14" |
WksRange.Columns Method
Rows are limited to the original range (the same as if a whole-column sub-range were supplied to the Range.Cells method)
Example:
Base Range |
Specified Sub-Range |
Range returned |
Wks.Range("B10:C20"). |
Columns("A:C") |
"B10:D20" |