Методическое пособие по курсу «Информатика» для студентов, обучающихся по всем направлениям


Работа с ячейками, диапазонами и листами



страница20/21
Дата09.08.2019
Размер3.36 Mb.
#127140
ТипМетодическое пособие
1   ...   13   14   15   16   17   18   19   20   21

11.4. Работа с ячейками, диапазонами и листами


До сих пор рассматривались изменения данных в активной ячейке и на текущем рабочем листе. Иногда требуется вводить данные на другой лист. Предположим, например, что после выполнения расчета стоимости необходимо заполнить накладную. Создайте процедуру, копирующую значения ячеек одного листа в ячейки другого листа.

55. Активизируйте новый лист.

56. Выполните процедуру Расчет_стоимости, используя допустимую величину скидки 0.3.

57. Введите значение розничной цены равное 100.

58. Снимите защиту с листа с помощью команды Сервис, Защита, Снять защиту листа.

59. Чтобы создать новую процедуру, выполните команду Сервис, Макрос, Макросы. В поле Имя макроса введите название создаваемой процедуры СоздатьНакладную и щелкните на кнопке Создать.

60. В открывшемся окне кода модуля в редакторе введите следующий текст процедуры:

Sub СоздатьНакладную()

'Назовем активный лист именем Расчет

ActiveSheet.Name = "Расчет"

'Добавим рабочий лист

Worksheets.Add

'Назовем активный лист (только что добавленный)

'именем Накладная

ActiveSheet.Name = "Накладная"

'Введем в ячейку C1 значение "Накладная"

Range("C1").Value = "Накладная"

'Установим в ячейке C1 шрифт полужирный, 14, курсив

Range("C1").Font.Bold = True

Range("C1").Font.Size = 14

Range("C1").Font.Italic = True

'Введем данные в ячейки A3, A4 и A5

Range("A3").Value = "Склад № 5"

Range("A4").Value = "ул. Энергетическая, 1"

Range("A5").Value = "Москва, Российская Федерация"

'Введем данные в ячейки B7, B8 и B9

Range("B7").Value = "Розничная цена:"

Range("B8").Value = "Оптовая скидка:"

Range("B9").Value = "Оптовая цена:"

'Установим ширину столбцов B и C

Columns("B:C").ColumnWidth = 30

'Установим курсивный шрифт в ячейках B7:B9

Range("B7:B9").Font.Italic = True

'Скопируем данные из ячеек листа Расчет

'в ячейки текущего листа

Range("C7").Value = _

Worksheets("Расчет").Range("C5").Value

Range("C8").Value = _

Worksheets("Расчет").Range("C9").Value

Range("C9").Value = _

Worksheets("Расчет").Range("C7").Value

'Установим в диапазоне B7:C9 размер шрифта 14

Range("B7:C9").Font.Size = 14

Range("B11").Value = "*** Спасибо за покупку! ***"

Range("B11").Font.Italic = True

End Sub


В этой процедуре впервые встречаются следующие объекты Excel, методы и свойства:

объект ActiveSheet – активный рабочий лист;

объект Worksheets – рабочий лист;

метод Add.Worksheets.Add – добавление нового рабочего листа.





Рис. 11.4. Рабочий лист, созданный процедурой СоздатьНакладную

Свойство Value (значение) диапазона Range, обеспечивающее доступ к данным, содержащимся в ячейках диапазона.

Процедура СоздатьНакладную создает новый рабочий лист (рис. 11.4) с именем Накладная и выполняет копирование на него данных с рабочего листа с именем Расчет. Назначение отдельных инструкций процедуры поясняет комментарий.

61. Покажите преподавателю результаты выполненной работы.

62. Закройте Excel.

63. Удалите свою рабочую папку.

11.5. Вопросы для контроля


1. Есть ли что-либо общее между макросом Excel и процедурой Visual Basic?

2. Как записать процедуру с помощью макрорекордера?

3. Как можно увидеть текст записанной процедуры?

4. Как выполнить записанную процедуру, используя обычное меню?

5. Как в меню создать кнопку, связанную с процедурой?

6. Как создать на рабочем листе объект (например кнопку), связанный с процедурой?

7. На что влияет значение свойства DisplayGridlines объекта ActiveWindow (активное окно)?

8. Чем является объект Range, например Range (“B2:D3”)?

9. Что делает метод Select при применении к объекту Range?

10. Что означает ссылка ActiveCell?

11. Каково назначение свойства FormulaR1C1 диапазона Range?

12. Каково назначение метода Columns?

13. На что влияет значение свойства ColumnWidth текущего выделения?

14. Каково назначение стандартных функций Val(Аргумент строчного типа) и Str(Аргумент любого числового типа)?

15. Чем является объект ActiveSheet?

16. Чем является объект Worksheets?

17. Что произойдет в результате применения метода Add к объекту Worksheets?

18. Чему соответствует значение свойства Value диапазона Range?


12. ЗАДАЧИ С МАССИВАМИ


Большинство задач, требующих выполнения операций над массивами, без программирования не решить. К ним относятся такие задачи, как транспонирование матрицы, нахождение ее следа, обращение матрицы, умножение матриц и многие подобные. Для решения некоторых из них, например, задачи транспонирования матрицы, имеются стандартные функции Excel.

12.1. Объект Range (диапазон)


Ячейка рабочего листа не является объектом Excel. К отдельной ячейке рабочего листа можно получить доступ через объект Range, который представляет собой совокупность ячеек. Объект Range может представлять как единственную ячейку таблицы, так и строку или столбец, некоторую прямоугольную область, а также объединение подобных несмежных элементов.

Адресация ячеек может выполняться либо в формате А1, либо в формате R1C1.


12.1.1. Адресация ячеек рабочего листа в формате А1.


В формате A1 имя ячейки строится из имени столбца и номера строки, например C12. Название формата выбрано по имени левой верхней ячейки рабочего листа. Адреса ячеек в этом формате являются относительными. Если, например, диапазон с именем MyRange включает ячейки D6:E10, то ссылка MyRange(“A1”) будет означать ячейку, находящуюся в левом верхнем углу этого диапазона, а значит – ячейку D6 в абсолютной адресации. Наряду с относительными ссылками имеется возможность применения абсолютных ссылок на строку или столбец. Признаком абсолютной ссылки является знак ($), предшествующий имени строки и (или) столбца. Так что адреса C5, C$5, $C5, $C$5 в зависимости от контекста могут именовать одну и ту же или четыре разных ячейки.

Следующий пример демонстрирует важную для понимания относительность ссылок на ячейки:

Dim MyRange As Range

Set MyRange = Range(”C1:C4”)

MyRange.Range(”A1”) = 7

MyRange.Range(”A2”) = ”=A1+2”

MyRange.Range(”A3:A4”) = ”=A1+A2”

Первая инструкция объявляет имя MyRange как имя диапазона. Вторая инструкция создает объект MyRange, заданный диапазоном C1:C4. Третья инструкция задает ячейку C1 в абсолютных адресах. В инструкциях присвоения (четвертая и пятая строки) ссылки слева от знака равенства делаются относительно объекта MyRange, а ссылки справа от знака равенства привязаны к абсолютным адресам.


12.1.2. Адресация ячеек рабочего листа в формате R1C1.


Этот формат называется так, поскольку адрес задается индексом строки (Row) и индексом столбца (Column). Название формата совпадает с адресом в этом формате левой верхней ячейки рабочего листа. Здесь ссылки тоже могут быть абсолютными или относительными. В абсолютных ссылках указываются действительные индексы ячейки, в относительных ссылках – их смещение по отношению к активной ячейке. Смещение задается в квадратных скобках и со знаком, указывающим направление смещения по отношению к активной ячейке. Переделаем предыдущий пример, чтобы в формулах использовались ссылки формата R1C1:

Dim MyRange As Range

Set MyRange = Range(”C1:C4”)

MyRange.Range(”A1”) = 7

MyRange.Range(”A2”) = ”=R1C1+2”

MyRange.Range(”A3:A4”) = ”=R[-2]+R[-1]”

В этом примере следует обратить внимание на следующие два обстоятельства:

1) при вызове диапазона его параметры можно задавать только в формате A1. Поэтому в левой части инструкций сохранена адресация в формате A1;

2) если в формуле вычисления связаны с одной и той же строкой или одним и тем же столбцом, то можно применять ссылку, используя один индекс. В данном примере в последней строке задано смещение по строкам, поскольку столбец остается неизменным и его можно не указывать.

Для перехода к новому диапазону, смещенному относительно текущего можно использовать метод Offset, который возвращает новый объект Range, отстоящий от прежнего на заданное расстояние. Этот метод имеет два параметра: смещение по строкам и смещение по столбцам.

Вот пример создания нового диапазона, смещенного относительно исходного:

Dim Range1 As Range, Range2 As Range

Set Range1 = Range(”C1:C4”)

Set Range2 = Range1.Offset(”2,3”)

Можно использовать смещение при работе с ячейками, например:

StlectCell.Offset(0,1).Value = 15





Поделитесь с Вашими друзьями:
1   ...   13   14   15   16   17   18   19   20   21




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница