Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vba.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.8 Mб
Скачать

Пример.

Range (“C4”). Formula R1C1 =”=R2C3 + R8C4” ‘ в ячейке С4 складывается содержимое ячеек C2(R2C3 вторая строка, третий столбик) и D8(R8C4). Отметим, что адреса ячеек C2 и D8 абсолютные. При использовании относительной или смешанной адресации в квадратных скобках записывается смещение относительно ячейки, в которой записывается формула.

Примеры.

a) Range (“D2”). Formula R1C1= “=R[1}C[-1] + R2C[3]”

По сути, в ячейке D2 записана формула «=С3+G$2»

b) Range (“F8”). Formula R1C1= “=sum(R[-7]C[-2] : R[-2]C)”

По сути, в ячейке F8 записана формула «=sum(D1:F6)». Обратите внимание на

смещение R[-2]C – на две строки вверх и нет смещения по столбцам!

10)FormulaLocal - – возвращает формулу в формате А1 локальной (русскоязычной) версии EXCEL Пример.

Range(“C5”). FormulaLocal = “=сумм(D1: D4)

В ячейке С5 стоит сумма чисел из диапазона D1: D4

Аналогично свойству 10 свойство 11

11)FormulaLocalR1C1 - возвращает формулу в формате R1C1 локальной (не основной, в данном случае русскоязычной ) версии EXCEL

Пример-аналог пункта 10)

Range(“C5”). FormulaLocal R1 C1= “=сумм(R[-4]C[1]:R[-1]C[1])

12)Address – возвращает абсолютный адрес указанного диапазона.

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

Пример.

MSGBOX “диапазон имеет адрес” & Range (“C1:D8”). Address

Основные методы объекта Range

1) clear очистка диапазона

Range(“А1:B3”).Clear

2) Select – выбрать

Выбирается указанный диапазон. В результате метода Select возникает объект Selection (по сути указанный диапазон )

С объектом Selection можно работать точно так, как с объектом Range: те же свойства и те же методы.

Пример.

Range(“А1:С3”).Select

Selection.Value=20 ‘ А1:B3 заполнены числами 20

n= Selection.Count ‘n=6 – кол-во ячеек в диапазоне. А1:C3

3)Activate – делает активной указанную ячейку, после чего к данной ячейки можно обращаться как к Activecell

Пример

Range(“А1”). Activate

Activecell. Value=33

4)delete - удалить

Range(“A:A”). Delete – удаление столбца А

5)Insert – вставка из буфера обмена на указанное место

Пример

Range(“3:3”). Insert

Вставка пустой строки перед третей, если буфер обмена был пуст.

Предположим, в буфере обмена находится число 87, а рабочий лист имеет вид

A

B

C

1

4

6

812

2

3

5

7

3

23

4

11

После строки кода

Range(“В2”). Insert

таблица будет иметь вид

A

B

C

1

4

6

812

2

3

87

7

3

23

5

11

6) Сору – копирование в буфер обмена

Range (“А1:А4”). Сору

7)Cut –вырезать в буфер обмена

Range (“А1:А4”). Cut

8)PasteSpecial – специальная вставка

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

Range (“А1:А4”).Cut

Range (“D8”). PasteSpecial

В буфере обмена находится содержимое диапазона А1:А4. Оно будет размещено в диапазоне D8:D11.

Аналогично

Range (“D8:D11”). PasteSpecial

9) offset (n,m) - смещение относительно указанной ячейки на n- строк и m- столбцов.

Пример.

Range (A3). Activate

Activecell.offset ( -1 , 5 ).Value = 25

A

B

C

D

E

F

1

2

3

В ячейке F 2 ,будет стоять число 25.

Пример.

Предположим, что ячейка А 1 находится внутри некоторого заполненного информацией диапазона. Нам необходимо написать слово «сумма» в 1-ой строке в столбце «А» рабочего листа сразу после диапазона содержащего ячейку А1.

Нам помогут справиться с данной задачей такие свойства как CurrentRegion и Count.

Range (“A1”). Offset ( O, Range ( “A1” ). CurrentRegion.Columns.Count ). Value = «сумма»

Пример.

Предположим мы хотим протабулировать функцию sin x + arcsin x на отрезке [ 0 ; 0,5] с шагом 0,1 . Результат табуляции вывести на листе 2 в следующей таблице.

А

В

С

1

табулирование

2

начало

конец

шаг

3

0

0.5

0.1

4

аргумент

функция

5

0

0

6

0.1

0.2

Программа будет иметь вид:

Option Explicit

‘Все перемещения должны быть объявлены

Sub табулирование ( )

Worksheets ( «Лист 2»). Activate ‘активизация рабочего листа 2 .

Cells.Font.Size = 12 .

‘В каждой из ячеек ввести записи шрифтом № 12 .» Табулирование « шрифт 20, полужирный

With Range ( “A1”). Font

. size = 20

. Fontstyle = Bold

End with

Range (“ A 2”). Value = “Начало “

Range (“ B2”). Value = “Конец”

Range (“C2”). Value = “Шаг”

Range (“A3”). Value = 0

‘Если хотим ввести с экрана начало интервала табулирования, то нужна строка кода

Range (“A3”). Value = InputBox («Введите начало интервала» )

Range (“B3”). Value = 0.5

Cells (3.3). Value = 0.1

Range (“A4”). Value = «Аргумент»

Range („В4”) = ”функция”

‘Объявление переменных

Dim a as single, b as single, h as single

‘ а – начало, b – конец, h – шаг интервала табуляции

‘все переменные вещественные.

a = Range („A3”).value

b = cells (3,2).value

h = Range („C3”). value

Dim t as single ‘ t – переменная цикла

Dim n as integer, m as integer

’n - № строки, m - № столбца, целочисленные переменные

n = Range (А5”). Row ‘ n = 5

m = Range (А5”). Column ‘ m = 1

‘начало цикла табулирования

FOR t = a TO b+0.0001 Step h

‘добавка в 0,0001 даст возможность попасть на конец интервала; при переводе чисел

‘в двоичную систему, из-за округления, мы можем чуть-чуть «не дойти» до нужной точки

Cells (n, m). value = t

Cells (n, m+1). value = sin(t)+ Аpplication. WorksheetFunction.Asin (t)

n=n+1 ‘увеличение № строки на 1

NEXT t

END Sub

Замечание к использованию цикла FOR NEXT. Обращаем внимание на то, что при первом обращении к оператору FOR идет проверка будет ли начальное значение больше конечного, и если будет, то цикл не выполняется ни одного раза, т.е. мы сразу выходим из цикла.

Замечание 2. Шаг цикла может быть отрицательным, в этом случае мы выходим из цикла тогда, когда перееменная цикла становится меньше конечного значения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]