Excel 2019 Power Programming with VBA. Michael Alexander

Чтение книги онлайн.

Читать онлайн книгу Excel 2019 Power Programming with VBA - Michael Alexander страница 32

Excel 2019 Power Programming with VBA - Michael Alexander

Скачать книгу

Range property of a Worksheet or Range class object

       The Cells property of a Worksheet object

       The Offset property of a Range object

      The Range property

      The Range property returns a Range object. If you consult the Help system for the Range property, you learn that this property has two syntaxes.

      object.Range(cell1) object.Range(cell1, cell2)

      The Range property applies to two types of objects: a Worksheet object or a Range object. Here, cell1 and cell2 refer to placeholders for terms that Excel recognizes as identifying the range (in the first instance) and delineating the range (in the second instance). The following are a few examples of using the Range property.

      You've already seen examples like the following one earlier in the chapter. The instruction that follows simply enters a value into the specified cell. In this case, it puts the value 12.3 into cell A1 on Sheet1 of the active workbook.

      Worksheets("Sheet1").Range("A1").Value = 12.3

      The Range property also recognizes defined names in workbooks. Therefore, if a cell is named Input, you can use the following statement to enter a value into that named cell:

      Worksheets("Sheet1").Range("Input").Value = 100

      The example that follows enters the same value in a range of 20 cells on the active sheet. If the active sheet isn't a worksheet, the statement causes an error message.

      ActiveSheet.Range("A1:B10").Value = 2

      The next example produces the same result as the preceding example:

      Range("A1", "B10") = 2

      The following example uses the Excel range intersection operator (a space) to return the intersection of two ranges. In this case, the intersection is a single cell, C6. Therefore, this statement enters 3 in cell C6:

      Range("C1:C10 A6:E6") = 3

      Finally, if the range you're referencing is a noncontiguous range (a range where not all the cells are adjacent to each other), you can use commas to serve as a union operator. For example, the following statement enters the value 4 in five cells that make up a noncontiguous range. Note that the commas are within the quote marks.

      Range("A1,A3,A5,A7,A9") = 4

      So far, all the examples have used the Range property on a Worksheet object. As mentioned, you can also use the Range property on a Range object. For example, the following line of code treats the Range object as if it were the upper-left cell in the worksheet, and then it enters a value of 5 in the cell that would be B2. In other words, the reference returned is relative to the upper-left corner of the Range object. Therefore, the statement that follows enters a value of 5 into the cell directly to the right and one row below the active cell:

      ActiveCell.Range("B2") = 5

      Fortunately, you can access a cell relative to a range in a much clearer way—the Offset property. We discuss this property after the next section.

      The Cells property

      Another way to reference a range is to use the Cells property. You can use the Cells property, like the Range property, on Worksheet objects and Range objects. Check the Help system, and you see that the Cells property has three syntaxes.

      object.Cells(rowIndex, columnIndex) object.Cells(rowIndex) object.Cells

      Some examples demonstrate how to use the Cells property. The first example enters the value 9 in cell A1 on Sheet1. In this case, we're using the first syntax, which accepts the index number of the row (from 1 to 1048576) and the index number of the column (from 1 to 16384):

      Worksheets("Sheet1").Cells(1, 1) = 9

      Here's an example that enters the value 7 in cell D3 (that is, row 3, column 4) in the active worksheet:

      ActiveSheet.Cells(3, 4) = 7

      ActiveCell.Cells(1, 1) = 5

      NOTE

      The real advantage of this type of cell referencing will be apparent when you explore variables and looping (in Chapter 3, “VBA Programming Fundamentals”). In most cases, you don't use actual values for the arguments; rather, you use variables.

      To enter a value of 5 in the cell directly below the active cell, you can use the following instruction:

      ActiveCell.Cells(2, 1) = 5

      Think of the preceding example as though it said this: “Start with the active cell and consider this cell as cell A1. Place 5 in the cell in the second row and the first column.”

      The second syntax of the Cells property uses a single argument that can range from 1 to 17,179,869,184. This number is equal to the number of cells in an Excel worksheet. The cells are numbered starting from A1 and continuing right and then down to the next row. The 16,384th cell is XFD1; the 16,385th cell is A2.

      The next example enters the value 2 into cell SZ1 (which is the 520th cell in the worksheet) of the active worksheet:

      ActiveSheet.Cells(520) = 2

      To display the value in the last cell in a worksheet (XFD1048576), use this statement:

      MsgBox ActiveSheet.Cells(17179869184)

      You can also use this syntax with a Range object. In this case, the cell returned is relative to the Range object referenced. For example, if the Range object is A1:D10 (40 cells), the Cells property can have an argument from 1 to 40 and can return one of the cells in the Range object. In the following example, a value of 2000 is entered in cell A2 because

Скачать книгу