Обмен данными между программой и таблицей (сокращенный вариант)



Примечание:

В этом варианте представлена минимальная информация, котортая позволит обмениваться данными с таблицей. Этот подход не дает полного понимания вопроса, но позволяет организовать практическую работу и продолжить освоение основных идей программирования. Более строгое изложение вопроса дается в «альтернативаном» варианте данной серии уроков.

Постановка задачи

Макрос, которые мы рассмотрели выше, работал следующим образом:

· входная информация задавалась конкретными числами в самой программе;

· выходная информация выводилась в специальное окно сообщений и не запоминалась в таблице.

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

Объяснение будем вести на конкретном примере. Пусть нам известна длина ребра куба и нам надо найти его объем и площадь поверхности. Таблица спланирована следующим образом:

A B C
1 Ребро 20  
2 Объем (V)    
3 Площадь (S)    
4      

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

1. Для связи с таблицей создать особую «объектную переменную»

Объектные переменные для работы с таблицей имеют тип данных Range и создаются обычным способом:

Dim <name> As Range

Пример:

Dim mesto As Range

2. (логический шаг) Выделить в таблице диапазон, в котором расположены интересующие нас даннные, и выбрать левую-верхнюю ячейку этого диапазона как точку отсчета. В нашем примере диапазоном будут ячейки B1: B3, а точкой отсчета – ячейка B1.

3. Установить «привязку» объектной переменной к выбранной ячейке. Привязка устанавливается с помощью инструкции Set. Кроме ключевого сллова Set эта инструкция использует все тот же знак равенства.

Set <name> = <Ячейка>

Обращение к ячейке имеет формат

Range("<координаты>")

Пример:

Set mesto = Range("B1")

Можно считать, что теперь в объектной переменной хранится адрес ячейки.

4. (логический шаг) Вокруг выбранной ячейки создается временная система числовых координат. Ячейка получает координаты (1, 1) (а не (0, 0), как могло бы быть). Порядок координат – (<номер_строки>, <номер_столбца>), т.е. не так, как в математике.

 

5. Обращение к любой «соседней» ячейке выглядит, как

mesto(<номер_строки>, <номер_столбца>)

Например, (если точкой отсчета является ячейка B1) к ячейке B3 нужно обращаться:

mesto(3, 1)

Для обращения к «основной» ячейке B1 достаточно написать:

mesto

но можно писать по общему правилу:

mesto(1, 1)

 

6. Обычно взаимодействие с таблицей заключается в переносе значний из таблицы в переменные или наоборот. Этот перенос осуществляется по уже известным правилам, на основе знака равенства. Примеры:

Перенос из таблицы в переменную:

rebro = mesto(1, 1)

Перенос из переменной в таблицу:

     mesto(1, 3) = S

Перенос значений реализуется с помощью знака равенства (Объект = Объект). Об этой строке надо думать, как о бурлаке или ковбое с лассо: объект слева тянет на себя значение объекта справа.

Общий план решения задач при взаимодействии «программа–таблица»

0) Планируем внутренние и объектные переменные, устанавливаем привязку объектных переменных

1) Значения из таблицы переносим во внутренние переменные

2) Решаем задачу в обычных переменных

3) Итоговые значение переносим из внутренних переменных в ячейки таблицы.

Решение задачи:

Напомним заявленную задачу, спланируем переменные и перенос данных:

A B C

(цифры в скобках означают пункты плана решения задач)

1 Ребро 20   mesto
2 Объем      
3 Площадь      

(1)                        (3)  (3)

 

 

 

     

rebro

plo1

S

V    

(2)

(2)

(2)

   
                 

 

Текст программы:

Этап Комментарии Текст программы
  Заголовок процедуры Sub Kub()
0.1 Объявляем внутренние переменные Dim rebro As Integer Dim plo1 As Integer Dim S As Integer Dim V As Double
0.2 Объявляем объектную переменную (mesto) и устанавливаем ее привязку к ячейке B1 Dim mesto As Range Set mesto = Range("B1")
1. Переносим значения из таблицы в переменные rebro = mesto(1, 1)
2. Проводим расчеты во внутренних переменных plo1 = rebro * rebro S = plo1 * 6 V = plo1 * rebro
3. Отправляем конечные результаты в таблицу. mesto(2, 1) = V mesto(3, 1) = S
  Окончание процедуры End Sub

 

Задание I :

Переделайте в таком же стиле задачу про прямоугольник.

Используйте два варианта расположения данных:

A B C D
1 Длина 12 Площадь 96
2 Ширина 8 Периметр 40

и

A B C D
1 Длина Ширина Площадь Периметр
2 12 8 96 40

 


Дата добавления: 2019-03-09; просмотров: 199; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!