Assuming the currency pairs are in column A, you can use a formula:
=MATCH("USD/EUR",A:A,0)
It will return the row where the currency is located (if there are duplicates, the row where it first appears is returned).
If you want to use VBA, you can read the data in an array and loop over the array (below an example looking for «EUR/USD» which you can adapt to your needs):
Sub test()
Dim row As Long
row = findCurrencyPair("EUR/USD")
If row = 0 Then
MsgBox "EUR/USD not found"
Else
MsgBox "EUR/USD found in row " & row
End If
End Sub
Function findCurrencyPair(pair As String) As Long
Dim data As Variant
Dim i As Long
Dim lastRow As Long
With Sheets("SpotRates")
lastRow = .Cells.Find(What:="*", after:=.Range("A1"), LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).EntireRow.row
data = .Range("A1:A" & lastRow) 'Replace A with the relevant column name
End With
If IsArray(data) = False Then Exit Function 'Empty sheet
For i = LBound(data, 1) To UBound(data, 1)
If data(i, 1) = pair Then
findCurrencyPair = i
Exit Function
End If
Next i
'if not found, returns 0
End Function
EDIT
Following @Readify comment, an even simpler solution would be (assuming the data only appears in one column):
Function findCurrencyPair(pair As String) As Long
On Error Resume Next
findCurrencyPair = Sheets("SpotRates").Cells.Find(What:=pair).Row
End Function
This macro gets certain row index.
Excel
- 7133
- 1212
- 0
- 0
1 Open MS Excel.
2 Create a blank workbook.
3 Go to Developer’s tab > click on «Visual Basic» button or hit Alt + F11.
4 Go to Insert tab > click on «Module» or hit M.
5 Copy the VBA code from below.
6 Paste the code in the newly created module.
7 Go to Run tab > click on «Run Sub/UserForm» or hit F5.
8 That’s it!
Advertisement
Code
'==========================================
' Get Column Index
'==========================================
Sub getRowIndex()
' Set variables
Dim strMessage As String
Dim c As Range
' Set message
strMessage = "Row(s): "
' Loop in used range
For Each c In ActiveSheet.UsedRange
' Check each cell value
If c = "Index" Then
' Append to message
strMessage = strMessage & c.Row & ", "
End If
Next c
' Return a message
MsgBox strMessage & " have Index in them."
End Sub
Advertisement
Comments
Advertisement
Advertisement
Code was successfully copied!
Link was successfully copied!
-
If you would like to post, please check out the MrExcel Message Board FAQ and register here. If you forgot your password, you can reset your password.
-
Thread starter
BarbE
-
Start date
Oct 16, 2003
-
#1
Hi
This is driving me crazy … I know I should know how to do this but I can’t get my memory working today.
Can someone help me out here please?
All I need to know is how to write in VBA rows(a2), ie get the row index of a specific cell.
Thanks a lot!
Barb
Move date out one month or year
Use =EDATE(A2,1) for one month later. Use EDATE(A2,12) for one year later.
-
#2
MyAddress = activecell.row
-
#3
lord of the badgers said:
MyAddress = activecell.row
THANKS!!!!!!!!!!
-
#4
Loving the choice of image for your avatar, lord of the badgers. PT rock!
And thank you for the code I needed (but someone else asked for). The internet is a wonderful thing.
- Threads
- 1,192,536
- Messages
- 5,993,054
- Members
- 440,469
- Latest member
- Quaichlek
title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
Range object (Excel) |
vbaxl10.chm143072 |
vbaxl10.chm143072 |
excel |
Excel.Range |
b8207778-0dcc-4570-1234-f130532cc8cd |
08/14/2019 |
high |
Range object (Excel)
Represents a cell, a row, a column, a selection of cells containing one or more contiguous blocks of cells, or a 3D range.
[!includeAdd-ins note]
Remarks
The default member of Range forwards calls without parameters to the Value property and calls with parameters to the Item member. Accordingly, someRange = someOtherRange
is equivalent to someRange.Value = someOtherRange.Value
, someRange(1)
to someRange.Item(1)
and someRange(1,1)
to someRange.Item(1,1)
.
The following properties and methods for returning a Range object are described in the Example section:
- Range and Cells properties of the Worksheet object
- Range and Cells properties of the Range object
- Rows and Columns properties of the Worksheet object
- Rows and Columns properties of the Range object
- Offset property of the Range object
- Union method of the Application object
Example
Use Range (arg), where arg names the range, to return a Range object that represents a single cell or a range of cells. The following example places the value of cell A1 in cell A5.
Worksheets("Sheet1").Range("A5").Value = _ Worksheets("Sheet1").Range("A1").Value
The following example fills the range A1:H8 with random numbers by setting the formula for each cell in the range. When it’s used without an object qualifier (an object to the left of the period), the Range property returns a range on the active sheet. If the active sheet isn’t a worksheet, the method fails.
Use the Activate method of the Worksheet object to activate a worksheet before you use the Range property without an explicit object qualifier.
Worksheets("Sheet1").Activate Range("A1:H8").Formula = "=Rand()" 'Range is on the active sheet
The following example clears the contents of the range named Criteria.
[!NOTE]
If you use a text argument for the range address, you must specify the address in A1-style notation (you cannot use R1C1-style notation).
Worksheets(1).Range("Criteria").ClearContents
Use Cells on a worksheet to obtain a range consisting all single cells on the worksheet. You can access single cells via Item(row, column), where row is the row index and column is the column index.
Item can be omitted since the call is forwarded to it by the default member of Range.
The following example sets the value of cell A1 to 24 and of cell B1 to 42 on the first sheet of the active workbook.
Worksheets(1).Cells(1, 1).Value = 24 Worksheets(1).Cells.Item(1, 2).Value = 42
The following example sets the formula for cell A2.
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
Although you can also use Range("A1")
to return cell A1, there may be times when the Cells property is more convenient because you can use a variable for the row or column. The following example creates column and row headings on Sheet1. Be aware that after the worksheet has been activated, the Cells property can be used without an explicit sheet declaration (it returns a cell on the active sheet).
[!NOTE]
Although you could use Visual Basic string functions to alter A1-style references, it is easier (and better programming practice) to use theCells(1, 1)
notation.
Sub SetUpTable() Worksheets("Sheet1").Activate For TheYear = 1 To 5 Cells(1, TheYear + 1).Value = 1990 + TheYear Next TheYear For TheQuarter = 1 To 4 Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter Next TheQuarter End Sub
Use_expression_.Cells, where expression is an expression that returns a Range object, to obtain a range with the same address consisting of single cells.
On such a range, you access single cells via Item(row, column), where are relative to the upper-left corner of the first area of the range.
Item can be omitted since the call is forwarded to it by the default member of Range.
The following example sets the formula for cell C5 and D5 of the first sheet of the active workbook.
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()" Worksheets(1).Range("C5:C10").Cells.Item(1, 2).Formula = "=Rand()"
Use Range (cell1, cell2), where cell1 and cell2 are Range objects that specify the start and end cells, to return a Range object. The following example sets the border line style for cells A1:J10.
[!NOTE]
Be aware that the period in front of each occurrence of the Cells property is required if the result of the preceding With statement is to be applied to the Cells property. In this case, it indicates that the cells are on worksheet one (without the period, the Cells property would return cells on the active sheet).
With Worksheets(1) .Range(.Cells(1, 1), _ .Cells(10, 10)).Borders.LineStyle = xlThick End With
Use Rows on a worksheet to obtain a range consisting all rows on the worksheet. You can access single rows via Item(row), where row is the row index.
Item can be omitted since the call is forwarded to it by the default member of Range.
[!NOTE]
It’s not legal to provide the second parameter of Item for ranges consisting of rows. You first have to convert it to single cells via Cells.
The following example deletes row 5 and 10 of the first sheet of the active workbook.
Worksheets(1).Rows(10).Delete Worksheets(1).Rows.Item(5).Delete
Use Columns on a worksheet to obtain a range consisting all columns on the worksheet. You can access single columns via Item(row) [sic], where row is the column index given as a number or as an A1-style column address.
Item can be omitted since the call is forwarded to it by the default member of Range.
[!NOTE]
It’s not legal to provide the second parameter of Item for ranges consisting of columns. You first have to convert it to single cells via Cells.
The following example deletes column «B», «C», «E», and «J» of the first sheet of the active workbook.
Worksheets(1).Columns(10).Delete Worksheets(1).Columns.Item(5).Delete Worksheets(1).Columns("C").Delete Worksheets(1).Columns.Item("B").Delete
Use_expression_.Rows, where expression is an expression that returns a Range object, to obtain a range consisting of the rows in the first area of the range.
You can access single rows via Item(row), where row is the relative row index from the top of the first area of the range.
Item can be omitted since the call is forwarded to it by the default member of Range.
[!NOTE]
It’s not legal to provide the second parameter of Item for ranges consisting of rows. You first have to convert it to single cells via Cells.
The following example deletes the ranges C8:D8 and C6:D6 of the first sheet of the active workbook.
Worksheets(1).Range("C5:D10").Rows(4).Delete Worksheets(1).Range("C5:D10").Rows.Item(2).Delete
Use_expression_.Columns, where expression is an expression that returns a Range object, to obtain a range consisting of the columns in the first area of the range.
You can access single columns via Item(row) [sic], where row is the relative column index from the left of the first area of the range given as a number or as an A1-style column address.
Item can be omitted since the call is forwarded to it by the default member of Range.
[!NOTE]
It’s not legal to provide the second parameter of Item for ranges consisting of columns. You first have to convert it to single cells via Cells.
The following example deletes the ranges L2:L10, G2:G10, F2:F10 and D2:D10 of the first sheet of the active workbook.
Worksheets(1).Range("C5:Z10").Columns(10).Delete Worksheets(1).Range("C5:Z10").Columns.Item(5).Delete Worksheets(1).Range("C5:Z10").Columns("D").Delete Worksheets(1).Range("C5:Z10").Columns.Item("B").Delete
Use Offset (row, column), where row and column are the row and column offsets, to return a range at a specified offset to another range. The following example selects the cell three rows down from and one column to the right of the cell in the upper-left corner of the current selection. You cannot select a cell that is not on the active sheet, so you must first activate the worksheet.
Worksheets("Sheet1").Activate 'Can't select unless the sheet is active Selection.Offset(3, 1).Range("A1").Select
Use Union (range1, range2, …) to return multiple-area ranges—that is, ranges composed of two or more contiguous blocks of cells. The following example creates an object defined as the union of ranges A1:B2 and C3:D4, and then selects the defined range.
Dim r1 As Range, r2 As Range, myMultiAreaRange As Range Worksheets("sheet1").Activate Set r1 = Range("A1:B2") Set r2 = Range("C3:D4") Set myMultiAreaRange = Union(r1, r2) myMultiAreaRange.Select
If you work with selections that contain more than one area, the Areas property is useful. It divides a multiple-area selection into individual Range objects and then returns the objects as a collection. Use the Count property on the returned collection to verify a selection that contains more than one area, as shown in the following example.
Sub NoMultiAreaSelection() NumberOfSelectedAreas = Selection.Areas.Count If NumberOfSelectedAreas > 1 Then MsgBox "You cannot carry out this command " & _ "on multi-area selections" End If End Sub
This example uses the AdvancedFilter method of the Range object to create a list of the unique values, and the number of times those unique values occur, in the range of column A.
Sub Create_Unique_List_Count() 'Excel workbook, the source and target worksheets, and the source and target ranges. Dim wbBook As Workbook Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim rnSource As Range Dim rnTarget As Range Dim rnUnique As Range 'Variant to hold the unique data Dim vaUnique As Variant 'Number of unique values in the data Dim lnCount As Long 'Initialize the Excel objects Set wbBook = ThisWorkbook With wbBook Set wsSource = .Worksheets("Sheet1") Set wsTarget = .Worksheets("Sheet2") End With 'On the source worksheet, set the range to the data stored in column A With wsSource Set rnSource = .Range(.Range("A1"), .Range("A100").End(xlDown)) End With 'On the target worksheet, set the range as column A. Set rnTarget = wsTarget.Range("A1") 'Use AdvancedFilter to copy the data from the source to the target, 'while filtering for duplicate values. rnSource.AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=rnTarget, _ Unique:=True 'On the target worksheet, set the unique range on Column A, excluding the first cell '(which will contain the "List" header for the column). With wsTarget Set rnUnique = .Range(.Range("A2"), .Range("A100").End(xlUp)) End With 'Assign all the values of the Unique range into the Unique variant. vaUnique = rnUnique.Value 'Count the number of occurrences of every unique value in the source data, 'and list it next to its relevant value. For lnCount = 1 To UBound(vaUnique) rnUnique(lnCount, 1).Offset(0, 1).Value = _ Application.Evaluate("COUNTIF(" & _ rnSource.Address(External:=True) & _ ",""" & rnUnique(lnCount, 1).Text & """)") Next lnCount 'Label the column of occurrences with "Occurrences" With rnTarget.Offset(0, 1) .Value = "Occurrences" .Font.Bold = True End With End Sub
Methods
- Activate
- AddComment
- AddCommentThreaded
- AdvancedFilter
- AllocateChanges
- ApplyNames
- ApplyOutlineStyles
- AutoComplete
- AutoFill
- AutoFilter
- AutoFit
- AutoOutline
- BorderAround
- Calculate
- CalculateRowMajorOrder
- CheckSpelling
- Clear
- ClearComments
- ClearContents
- ClearFormats
- ClearHyperlinks
- ClearNotes
- ClearOutline
- ColumnDifferences
- Consolidate
- ConvertToLinkedDataType
- Copy
- CopyFromRecordset
- CopyPicture
- CreateNames
- Cut
- DataTypeToText
- DataSeries
- Delete
- DialogBox
- Dirty
- DiscardChanges
- EditionOptions
- ExportAsFixedFormat
- FillDown
- FillLeft
- FillRight
- FillUp
- Find
- FindNext
- FindPrevious
- FlashFill
- FunctionWizard
- Group
- Insert
- InsertIndent
- Justify
- ListNames
- Merge
- NavigateArrow
- NoteText
- Parse
- PasteSpecial
- PrintOut
- PrintPreview
- RemoveDuplicates
- RemoveSubtotal
- Replace
- RowDifferences
- Run
- Select
- SetCellDataTypeFromCell
- SetPhonetic
- Show
- ShowCard
- ShowDependents
- ShowErrors
- ShowPrecedents
- Sort
- SortSpecial
- Speak
- SpecialCells
- SubscribeTo
- Subtotal
- Table
- TextToColumns
- Ungroup
- UnMerge
Properties
- AddIndent
- Address
- AddressLocal
- AllowEdit
- Application
- Areas
- Borders
- Cells
- Characters
- Column
- Columns
- ColumnWidth
- Comment
- CommentThreaded
- Count
- CountLarge
- Creator
- CurrentArray
- CurrentRegion
- Dependents
- DirectDependents
- DirectPrecedents
- DisplayFormat
- End
- EntireColumn
- EntireRow
- Errors
- Font
- FormatConditions
- Formula
- FormulaArray
- FormulaHidden
- FormulaLocal
- FormulaR1C1
- FormulaR1C1Local
- HasArray
- HasFormula
- HasRichDataType
- Height
- Hidden
- HorizontalAlignment
- Hyperlinks
- ID
- IndentLevel
- Interior
- Item
- Left
- LinkedDataTypeState
- ListHeaderRows
- ListObject
- LocationInTable
- Locked
- MDX
- MergeArea
- MergeCells
- Name
- Next
- NumberFormat
- NumberFormatLocal
- Offset
- Orientation
- OutlineLevel
- PageBreak
- Parent
- Phonetic
- Phonetics
- PivotCell
- PivotField
- PivotItem
- PivotTable
- Precedents
- PrefixCharacter
- Previous
- QueryTable
- Range
- ReadingOrder
- Resize
- Row
- RowHeight
- Rows
- ServerActions
- ShowDetail
- ShrinkToFit
- SoundNote
- SparklineGroups
- Style
- Summary
- Text
- Top
- UseStandardHeight
- UseStandardWidth
- Validation
- Value
- Value2
- VerticalAlignment
- Width
- Worksheet
- WrapText
- XPath
See also
- Excel Object Model Reference
[!includeSupport and feedback]
Свойства
Cвойство Range
Свойство Range возвращает объект Range, определяемый аргументами. Используются два разных способа записи свойства Range.
Первый способ object.Range(Cell1)
Второй способ object.Range(Cell1 [,Cell2])
- object — ссылка на объект, например, на рабочий лист или на интервал ячеек. Ссылка необязательна. По умолчанию используется активный лист;
- Cell1, Cell2 — аргументы для задания интервала ячеек. Cell1 — указание обязательно при обоих способах записи свойства Range.
Первый способ
Аргумент Cell1 задает интервал ячеек произвольного размера.
Важно
- Могут использоваться имена, определенные в таблице, или координаты ячеек, столбцов, строк или интервалов.
- Координаты задаются в стиле A1.
- Координаты и имена заключаются в кавычки.
- При задании интервалов координаты левого верхнего угла и правого нижнего угла интервала разделяются двоеточием.
- Для задания несмежных интервалов используется запятая.
- Для задания пересечения интервалов используется пробел.
Запись | Возвращаемый объект |
---|---|
ActiveSheet.Range(«A1:A10«) | интервал ячеек A1:A10 на активном листе |
Range(«A:B») | столбцы A:B |
Range(«налог») | интервал с именем налог |
Range(«1:3») | строки с первой по третью |
Range(«A1:C2, B10:D24″) | объединение двух несмежных интервалов A1:C2 и B10:D24 |
Range(«A1:C10 B10:D24») | пересечение двух интервалов A1:C10 и B10:D24, т.е. интервал B10:C10 |
Второй способ
Аргументы задают координаты интервала:
- Cell1 — единственная ячейка (строка или столбец), задающая левый верхний угол интервала;
- Cell2 — единственная ячейка (строка или столбец), задающая правый нижний угол интервала. Необязательный аргумент.
Допустимо задание аргументов переменными, выражениями, свойствами или методами, представляющими объект Range — одну ячейку, одну строку или один столбец рабочего листа.
Запись | Возвращаемый объект |
---|---|
Range(«A5″,»D18») | интервал A5:D18 |
Range(Columns(1), Columns(5)) | интервал, содержащий первые пять столбцов рабочего листа |
ЗАПОМНИТЕ
- Если свойство Range применяется к объекту Range, то ссылка на интервал ячеек считается относительной и возвращается смещенный объект Range.
Например, если выделен интервал C1:D5, то запись Selection.Range(«B2») возвратит ячейку D2.
Свойство Cells
Свойство Cells возвращает единственную ячейку рабочего листа, которая находится на пересечении строки и столбца, задаваемых целыми числами.
Синтаксис object.Cells (RowIndex,ColumnIndex)
- object — ссылка на объект. Ссылка необязательна. По умолчанию используется активный лист;
- RowIndex — индекс строки;
- ColumnIndex — индекс столбца.
ЗАМЕЧАНИЯ
- В свойстве Cells индекс строки является первым аргументом, а индекс столбца — вторым аргументом, тогда как при задании адреса ячейки в стиле A1 сначала указывается столбец, а затем строка.
- Понятие «индекс» ( Index, ColumnIndex, RowIndex ) всегда подразумевает целое число, целочисленную переменную или выражение, результат вычисления которого есть целое число или может быть преобразован в целое число.
Запись | Комментарий | Возвращаемый объект |
---|---|---|
ActiveSheet.Cells | Свойство Cells без аргументов | все ячейки активного рабочего листа |
Range(«C5:C10»).Cells(1,1) | Свойство Cells применяется к объекту Range (относительная ссылка) | ячейка C5 |
Range(Cells(7,3),Cells(10,4)) | Свойство Cells используется в качестве аргументов свойства Range | интервал ячеек C7:D10 |
Свойство Offset
Свойство Offset позволяет задавать ячейки или интервалы при помощи числа строк и колонок, которые отделяют нужную ячейку от исходной ячейки, т.е. указывая смещение относительно выбранной ячейки. Например, Range(«A5»).Offset(-2,1) возвращает ячейку B3.
Синтаксис object.Offset([RowOffset][,ColumnOffset])
- object — ссылка на объект Range. Ссылка обязательна и определяет объект, относительно которого задается смещение;
- RowOffset — смещение строки искомой ячейки относительно исходной ячейки;
- ColumnOffset — смещение столбца искомой ячейки относительно исходной ячейки.
Необязательные аргументы RowOffset и ColumnOffset — числовые выражения. Если какой-то аргумент не задан, то соответствующее смещение равно нулю.
Например, если выделен интервал C1:D5, то запись Selection.Offset(2,1).Select выделяет интервал D3:E7.
Метод Union и свойство Areas
Метод Union используется для объединения двух и более объектов Range, заданных ссылками на непересекающиеся интервалы, в один объект Range.
Синтаксис Object.Union (arg1,arg2,…)
- object — всегда объект Application. Ссылка необязательна;
- arg1,arg2 — интервалы ячеек. Количество аргументов произвольно. Обязательно наличие хотя бы двух аргументов.
Например, оператор Union(Range(«A1:C5»),Range(«B10:D12»)).Select выделяет несмежные интервалы A1:C5 и B10:D12.
Свойство Areas выполняет обратное действие, разделяя объединенные интервалы на несколько объектов Range.
Синтаксис Object.Areas(index)
- object — ссылка на объект Range, состоящий из нескольких интервалов;
- index — номер интервала в объекте. Аргумент необязателен.
Оператор | Комментарий | Результат |
---|---|---|
p=Union (Range(«A1:C5»), Range(«B10:D12»)).Areas(2).Count | Если аргумент задан, то свойство Areas возвращает интервал — объект Range, определенный индексом интервала | равен девяти, так как во втором интервале ровно 9 ячеек |
p=Union(Range(«A1:C5»), Range(«B10:D12»)).Areas.Count | Cвойство Areas без аргументов рассматривает каждый из несмежных интервалов как элемент коллекции объектов Range | равен двум, так как объект, определенный методом Union, состоит из двух областей — коллекции из двух элементов |
p=Range(«B10:D12»).Areas.Count | равен единице, так как объект Range представляет один элемент коллекции |
Свойства Column и Row (R/O Integer)
Свойства возвращают целое число, показывающее индекс первого столбца или первой строки соответственно для заданного объекта. Синтаксис свойств
- object — обязательная ссылка на объект Range.
Например, запись Range(«C5»).Column возвращает число 3, а запись Range(«C5»).Row возвращает число 5.
Свойства Columns и Rows
Свойство Columns (не путайте со свойством Column!) возвращает объект Range, представляющий колонку или коллекцию колонок в объекте, к которому это свойство было применено.
Синтаксис Object.Columns(index)
- object — ссылка на объект. Указание необязательно, по умолчанию используется активный рабочий лист;
- index — индекс колонки в объекте.
Например, запись Columns(1) возвращает колонку A активного рабочего листа, а запись Range(«C1:D5»).Columns(1) возвращает колонку C заданного интервала, а именно, ячейки C1:C5.
Важно
- Если не указан индекс колонки, то возвращаются все колонки объекта в виде объекта Range.
- Индекс колонки можно указывать числом или буквой, при этом буква заключается в кавычки. Ссылки Columns(2) и Columns(«B») указывают на одну и ту же колонку B.
Свойство Rows (не путайте со свойством Row!) возвращает объект Range, представляющий строку или коллекцию строк в объекте, к которому это свойство было применено.
Синтаксис Object.Rows(index)
- object — ссылка на объект. Указание необязательно, по умолчанию используется активный рабочий лист;
- index — индекс строки в объекте.
Важно
- Если не указан номер строки, то возвращаются все строки объекта в виде объекта Range.
Например, оператор nr=Selection.Rows(Selection.Rows.Count).Row позволяет получить номер последней строки в выделенном интервале ячеек.
Свойство CurrentRegion
Свойство CurrentRegion определяет объект Range, который соответствует интервалу ячеек, включающему заданную ячейку.
Пример
В процедуре сравниваются значения первой ячейки первой строки и первой ячейки каждой следующей строки заполненного данными интервала, включающего первую ячейку. Если значения совпадают, то очередная строка удаляется.
Предполагается, что данные начинаются с ячейки A1 и занимают несколько строк и столбцов, при этом расположены не плотно, т.е. внутри интервала с данными могут находиться пустые строки или пустые столбцы. Анализируются только строки заполненного данными интервала ячеек вокруг ячейки A1, не содержащего пустых строк и столбцов.
Рис.
8.9.
Пример работы со свойством CurrentRegion
Свойства | Примеры и комментарии |
---|---|
ColumnWidth (R/W Variant) | Возвращает или изменяет ширину колонки в единицах, эквивалентных одному символу в стиле Обычный ( Normal ). Шрифт стиля по умолчанию Arial Cyr и размер шрифта 10.
Range(«A1»).ColumnWidth=15 устанавливает ширину колонки A в 15 символов |
Width (R/O Variant) | Возвращает ширину интервала ячеек в пунктах.
Range(«A1»).Width возвращает значение 93.75, если ширина колонки 15 символов, шрифт Times New Roman, размер шрифта 12 пунктов (72 пункта равны 1 дюйму или приблизительно 2,54 см). Debug.Print Range(«A1:C3»).ColumnWidth распечатает значение 8.43, а оператор Debug.Print Range(«A1:C3»).Width распечатает значение 144, если для колонок установлена стандартная ширина, шрифт Arial Cyr и размер шрифта 10 |
RowHeight (R/W Variant) | Возвращает или изменяет высоту строк интервала в пунктах.
ActiveCell.RowHeight = 14 устанавливает высоту строки, в которой находится активная ячейка, в 14 пунктов |
Height (R/O Variant) | Возвращает суммарную высоту интервала строк, зависящую от названия и размера шрифта. Если шрифт Arial Cyr и размер шрифта 10, то Debug.Print Range(«A1»).Height распечатает 12,75 и Debug.Print Range(«A1:C3»).Height распечатает 38,25 |
WrapText (R/W Boolean) |
Range(«A1»).WrapText=True
Значение True разбивает текст ячейки на несколько строк, если ширина столбца недостаточна для размещения текста целиком |
Замечание
- Свойства Width и Height имеют статус Read-Only для объектов Range, но для других объектов, например, для объекта Window, они имеют статус Read-Write.
Методы
Методы Select и Activate
Метод Select выделяет интервал ячеек.
Синтаксис object.Select(Replace)
- object — выделяемый объект типа Range. Ссылка на объект обязательна;
- Replace — для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.
Метод Activate активизирует единственную ячейку.
Синтаксис object.Activate
- object — активизируемая ячейка. Ссылка на объект обязательна.
Оператор | Активная ячейка |
---|---|
Range(«C7:E9»).Select | C7 |
Range(«C7:E9»).Offset(1,1).Activate | D8 |
Range(«C7:E9»).Activate | C7 |
Range(«C7:E9»).Cells(2,1).Activate | C8 |
ЗАМЕЧАНИЯ
- Активная ячейка выделяется фоном среди всех выделенных ячеек.
- Метод Select выделяет интервал ячеек, тогда как метод Activate активизирует только одну ячейку.
- При использовании метода Select первая ячейка интервала становится активной.
- Если выделена только одна ячейка, то она является активной и свойства ActiveCell и Selection возвращают одну и ту же ячейку (объект Range ).
Метод Clear
Очищает интервал ячеек, изменяя, таким образом, свойство Value каждой ячейки интервала.
Пример
Процедура очищает интервал ячеек или заполняет его единицами в зависимости от значений ячеек. Дополнительно изменяется шрифт и размер шрифта.
Рис.
8.10.
Пример применения метода Clear
Название шрифта является обязательным параметром вызываемой процедуры, а размер шрифта — необязательным параметром. Если он не задан, то размер шрифта принудительно меняется на 16.
Вызывающая процедура проверяет, является ли интервал ячеек A1:B5 пустым. Если это не так, то интервал очищается и размер шрифта устанавливается в 16. Если же интервал ячеек пуст, то все ячейки интервала заполняются единицами и размер шрифта интервала ячеек равен 10.
В обоих случаях шрифт ячеек интервала A1:B5 устанавливается в Times New Roman.
Цветовое оформление объекта Range
Свойство ColorIndex
Свойство ColorIndex заливки (заливка — это объект Interior, который является вложенным для объекта Range ) рассматривает цвет как номер в палитре цветов рабочей книги. Всего в палитре 56 цветов.
Пример
В ячейках, начиная с активной, отображается палитра цветов рабочей книги.
Переменные c и r содержат, соответственно, индекс столбца и индекс строки активной ячейки.
Прямоугольный интервал из 56 ячеек (7 строк и 8 столбцов, начиная с активной ячейки) для отображения палитры задается переменной obj_range, содержащей ссылку на объект Range.
Свойство Pattern (образец заливки) задается константой xlSolid, позволяющей установить заливку активных ячеек.
Свойство Color
Свойство относится к объектам Border, Font или Interior (вложенные объекты для объекта Range ) и устанавливает цвет объекта в формате RGB. Свойство можно задать, используя функцию RGB, которая возвращает цвет в виде числа типа Long. Аргументы функции Red, Green, Blue определяют насыщенность соответствующей компоненты в устанавливаемом цвете и изменяются от 0 до 255.
Например, оператор ActiveCell.Interior.Color=RGB(255, 0, 0) устанавливает красную заливку активной ячейки.
Замечание
- Не путайте свойство Color со свойством Colors! Последнее является свойством объекта Workbook и использует палитру цветов рабочей книги как массив значений цветов, например, оператор ActiveWorkbook.Colors(51) = RGB(255,0,0) меняет 51 цвет палитры активной рабочей книги на красный.
Чтобы использовать серый цвет разной интенсивности, установите равные аргументы функции RGB, например, выражение RGB(196,196,196) устанавливает 25% серую заливку. Чем больше значения аргументов, тем ближе серый цвет к белому.