Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Строковые ссылки в стиле А1 или имена диапазонов



Самый распространенный способ получить объектRange ? сделать ссылку в стиле А1 или по имени диапазона, как показано в таблице:

Чтобы: Напишите:
Изменить значение в ячейке А1на листе Sheet1 Worksheets("Sheet1").Range( "А1") .Value = 3
Установить формулу для ячейки Bl на активном листе Range("B1") .Formula = "=5-10*RAND()"
Присвоить значение всем ячейкам диапазона С1:ЕЗ на активном листе Range("C1:E3").Value = 6
Очистить содержимое диапазона А1:ЕЗ на активном листе Range("A1", "E3").ClearContents
Установить полужирное начертание шрифта для диапазона myRange (имя на уровне книги) Range("myRange"). Font. Bold = True
Присвоить значение всем ячейкам диапазона yourRange (имя на уровне листа) Range( "Sheetl!yourRange"). Value = 3
Присвоить объектной переменной ссылку на диапазон Set objRange = Range( "myRange")

Помните, что выражения типа Range( "С1 : Е3" ) . Value = 6 подразумевают обращение к свойствуRange активного листа. Если Вы попытаетесь выполнить это выражение в тот момент, когда активен лист диаграммы, произойдет ошибка периода выполнения (с кодом 1004).

Еще одна причина ошибок ? использование свойстваRange в качестве аргумента другого метода без полного описания объекта Worksheet, к которому оно относится. В следующем примере, который должен был бы сортировать диапазон ячеек на листе Sheet1, тоже возникает ошибка периода выполнения 1004:

 

Sub SortRange()
Worksheets( "Sheet1 ").Range("A1:B10") .Sort
key1 :=Range("A1" ), order1 :=xlDescending
End Sub

 

Такую ошибку обнаружить труднее, поскольку строка, из которой вызывается метод Sort, сама по себе корректна. Ошибка возникает во второй строке, где указан аргумент key1. Этот код будет работать правильно, если активным листом является Sheet1, но приведет к ошибке при обращении к нему из другого листа или модуля. Во избежание подобных ошибок используйте при задании аргумента свойство Worksheets:

 

Sub SortRange()
Worksheets("Sheet1").Range("A1 :B10").Sort
key1 : Worksheets ("Sheet1") .Range("A1"), order1 :=xlDescending
End Sub

Числовые индексы строк и колонок

 

Получить нужную ячейку можно и так: указать индексы строки и колонки, на пересечении которых она находится. Первым задается индекс строки, за ним следует индекс колонки.

Чтобы: Напишите:
Изменить значение в ячейке А1 на листе Sheet1 Worksheets( "Sheet1").Cells(1, 1). Value = 3
Задать формулу для ячейки Bl на активном листе Cells(1, 2) .Formula - "=5-10*RAND()
Установить объектную переменную Set objRange = Worksheets( "Sheetl") .Cells(1, 1)

Числовые индексы строк и колонок очень удобны при обращении к ячейке по значению счетчика цикла. Например, следующий код перебирает все ячейки диапазона А1:D10 на листе Sheet1. Если какая-нибудь ячейка содержит значение 0.01, оно заменяется нулем.

 

Sub RoundToZero()
For rwIndex = 1 to 4
For colIndex = 1 to 10
If Worksheets("Sheet1").Cells(rwIndex, colIndex) < .01 Then
Worksheets("Sheet1").Cells(rwIndex, colIndex).Value = 0
End If
Next colIndex
Next rwIndex
End Sub

 

Следующий пример иллюстрирует простой и быстрый способ вывода на экран группы элементов в виде многоколоночного списка. Программа создает новый лист и присваивает ссылку на него объектной переменной newSheet. Затем создает список всех имен в активной книге и отображает связанные с ними формулы.

 

Sub ListNames()
Set newSheet = Worksheets.Add
i = 1
For Each nm In ActiveWorkbook.Names
newSheet.Cells(i, 1).Value = nm.Name
newSheet.Cells (i, 2).Value = " ' " & nm.RefersTo
i = i + 1
Next nm
newSheet.Columns("A:B") .AutoFit
End Sub

Свойство Offset

 

Весьма часто возникает необходимость обратиться к диапазону ячеек, который отстоит от другого диапазона на определеннее число строк и колонок. СвойствоOffset объектаRange принимает аргументыRowOffsetиColumnOffset и возвращает новый диапазон. В следующем примере программа определяет тип данных в каждой ячейке из диапазона A1 : A10 и перечисляет эти типы в колонке, расположенной справа от исходных ячеек:

 

Sub ScanColumn()
For Each с In Worksheets("Sheet1").Range("A1 :A10").Cells
If Application.lsText(c.Value) Then
c.0ffset(0, 1).Formula = "Text"
Elself Application.lsNumber(c.Value) Then
c.0ffset(0, 1).Formula = "Number"
Elself Application.IsLogical(c.Value) Then
c.0ffset(0, 1).Formula = "Boolean"
Elself Application.lsError(c.Value) Then
c.0ffset(0, 1).Formula = "Error"
Elself с .Value = "" Then
c.0ffset(0, 1).Formula = "(blank cell)"
End if
End c
End Sub

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.