3.4.2 Занесение в ячейку листа формул
Чтобы занести выражение в ячейку электронной таблицы необходимо:
- адресоваться к ней способами, изложенными выше;
- вызвать метод Formula.
Ниже приведены примеры для различных способов адресации к ячейке:
а) прямая ссылка на имя ячейки: Range(“A1”).Formula= ”=a1+a2”;
б) прямая ссылка на номер ячейки: Cells(1,1).Formula= “=a1+a2”;
в) косвенная ссылка на имя ячейки:
Range(“A1”).Select
ActiveCell.Formula= “=a1+a2”
г) косвенная ссылка на ячейку по приращению:
ActiveCell.Offset(0,1).Range(“A1”).Select
ActiveCell.Formula= “=a1+a2”
Непосредственно использовать в макросах на Visual Basic функций Excel можно через инструкцию WorksheetFunction.Имя_функции(список параметров). Параметр, содержащий ссылку на ячейку, оформляется как было изложено выше:
Dim a As Double
a=10+WorksheetFunction.Acos(Range(“A1”))
‘Вычисление ArcCos ячейки А1
a=10+WorksheetFunction.Acos(Cells(1,1))
‘Вычисление ArcCos ячейки А1
Для операций с группой ячеек достаточно указать их размещение в операторе Range(“A1:B3”):
a= WorksheetFunction.Min(Range(“A1:B3”))
‘Поиск минимального значения в блоке А1:В3
Для удобства используется оператор Set (присвоить), позволяющий назначить переменной типа Range область ячеек:
Dim ab As Range
Set ab=Workbooks(“Work.xls”).Worksheets(“Лист1”).Range(“A1:B3”)
a= WorksheetFunction.Min(ab)
‘Поиск минимального значения в блоке ячеек А1:В3
При вызове стандартных функций Visual Basic (Exp, Cos, Sin и т.д.) в качестве параметров нужно передавать только переменные или значения, определенные в макросе. При вызове функций Excel нужно передавать только ссылки на ячейки (инструкции Range, Cells).
3.5 Управляющие структуры
В Visual Basic, как и во всех языках программирования, существуют управляющие конструкции, предназначенные для управления порядком выполнения команд. Различают два основных типа управляющих операторов
· if
· Select Case
Конструкция if используется в том случае, когда необходимо, чтобы группа операторов выполнялась при соблюдении определенных условий. Конструкция select case позволяет на основании анализа значения заданного выражения выполнять те или иные действия.
В свою очередь, управляющие операторы if бывают двух видов:
· If...Then
· If...Then...Else
Конструкция If...Then применяется, когда необходимо выполнить определенные действия в зависимости от некоторого условия. Управляющая конструкция If...Then...Else используется в том случае, когда необходимо выполнить разные действия в зависимости от условия.
Конструкция if.. .Then.. .Else аналогична конструкции if...Then, но позволяет задать действия, исполняемые как при выполнении условий, так и в случае их невыполнения.
Конструкция имеет следующий синтаксис:
IF условие Then .
Конструкции для обработки истинного условия
Else
Конструкции для обработки ложного условия
End If
Ключевые слова IF и End if имеют тот же смысл, что и в конструкции If...Then. Если заданное в конструкции условие не выполняется (результат проверки равен False), и конструкция содержит ключевое слово Else, Visual Basic выполнит последовательность конструкций, расположенных следом за Else. После чего управление перейдет к конструкции, следующей после End If.
Например:
If x >= 0 Then
Label1.Caption = "Значение больше или равно 0"
Else
Labell.Caption = "Значение меньше 0"
End If
Команда if может проверить только одно условие. Если вам потребуется осуществить переход управления в зависимости от результатов проверки нескольких условий, то такая возможность существует. Дополнительное условие можно задать с помощью оператора Elseif. Оно будет анализироваться только в том случае, если предыдущее условие ложно. Например:
If x > 0 Then
Label1.Caption = "Значение положительное"
Elself x = 0 Then
Label1.Caption = "Значение равно 0"
Else
Labell.Caption = "Значение отрицательное"
End If
Конструкция Select case позволяет обрабатывать в программе несколько условий и аналогична блоку конструкций if.. .Then.. .Else. Эта конструкция состоит из анализируемого выражения и набора операторов case на каждое возможное значение выражения. Работает эта конструкция следующим образом. Сначала Visual Basic вычисляет значение заданного в конструкции выражения. Затем полученное значение сравнивается со значениями, задаваемыми в операторах case конструкции. Если найдено искомое значение, выполняются команды, приписанные данному оператору case. После завершения выполнения конструкций управление будет передано конструкции, следующей за ключевым словом End Select.
Синтаксис конструкции Select Case следующий:
Select Case сравниваемоеЗначение
CASE значение1
конструкция1
CASE значение2
конструкция2
. . .
End Select
В начале конструкции расположены ключевые слова select case, указывающие, что расположенный рядом с ними параметр сравниваемоеЗначение будет проверяться на несколько значений. Далее следуют группы команд. начинающиеся с ключевого слова Case. Если параметр сравниваемоеЗначение равен значению, указанному в текущем операторе case, то будут выполняться команды, расположенные между этим и следующим ключевым словом case. Select Case может выполнить не более одной из содержащихся в ней последовательностей конструкций. После того как одно из условий оказалось равно True, и была выполнена соответствующая последовательность конструкций, Select Case завершит свою работу. Остальные условия проверяться не будут.
В программах Visual Basic для выполнения повторяющихся действий используются циклы. Они бывают следующих типов:
· For...Next
· For Each...Next
· Do. . . Loop
Конструкция For...Next выполняет последовательность команд определенное число раз. Такую конструкцию называют циклом, а выполняемые ею программные коды — телом цикла.
Синтаксис конструкции For.. .Next следующий:
For счетчик = начЗначение То конЗначение [Step шаг]
конструкции
Next[счетчик]
Первый аргумент конструкции — счетчик — определяет имя переменной, которая будет "считать" количество выполнении цикла. Параметр начЗначение указывает числовое значение, которое присваивается переменной-счетчику перед первым проходом цикла. Цикл выполняется до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова то. После каждого прохода цикла значение счетчика изменяется на величину шаг, указанную за ключевым словом step. Ключевое слово Next обозначает конец тела цикла и является обязательным. Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конЗначение. Если значение счетчика не превышает установленного значения конЗначение, выполняются конструкции тела цикла. В противном случае управление переходит к следующей за Next конструкции. Например:
For nCountVar = 1 То 10 Step 2
nNextWeek(nCountVar) = nCountVar * 2
Next
Здесь цикл выполняется пять раз при значениях счетчика nCountVar 1, 3, 5, 7 и 9.
Шаг изменения счетчика может быть отрицательным. Например:
For nCounter = 100 То 1 Step -10
nDecades(nCounter) = nCounter *2
Next
В этом случае цикл будет выполняться до тех пор, пока nCountVar больше 1. Если значение шага цикла отрицательно, то начальное значение счетчика должно быть больше конечного. Ключевое слово step можно опустить. В этом случае значение шага по умолчанию принимается равным 1.
Возможны ситуации, при которых выполнение цикла невозможно или, наоборот, его выполнение становится бесконечным. Например:
· Невыполняемый цикл: начальное значение счетчика больше конечного при положительном шаге цикла
For nCounter=100 To 1
nDecades (nCounter) = nCounter
Next
· Бесконечный цикл: значение счетчика изменяется в теле цикла и никогда не превысит 10
For nCounter = 1 То 10
nCounter = 1
Next
Цикл с использованием конструкции For Each...Next похож на цикл For.. .Next, но используется для обработки всех элементов некоторого набора объектов или массива. Его особенно удобно использовать в том случае, когда количество обрабатываемых элементов не известно.
Синтаксис конструкции For Each.. .Next следующий:
For Each элемент In группа
конструкции
Next элемент
При использовании конструкции For Each.. .Next необходимо иметь в виду, что для набора объектов параметр элемент может быть только переменной типа Variant, общей переменной типа Object или объектом, перечисленным в Object Browser. Для массивов параметр элемент может быть только переменной типа Variant.
Цикл, задаваемый конструкцией Do... Loop, выполняется до тех пор, пока истинно задаваемое в цикле условие.
Синтаксис конструкции DO. . .Loop следующий:
Do While условие
конструкции
Loop
Аргумент конструкции условие является логическим выражением, значение которого проверяется перед каждым проходом цикла. Если это значение равно True, то выполняется последовательность команд, которые расположены между Do while и ключевым словом Loop. Эти конструкции образуют тело цикла. Если при очередном проходе цикла условие равно False, то происходит выход из цикла и управление передается конструкции, следующей за Loop. Возможна ситуация, при которой операторы цикла не выполняются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным.
В Visual Basic существует еще один вид цикла конструкции DO... Loop. Он отличается от рассмотренного ранее местом расположения условия. Если в предыдущей конструкции условие, по которому выполняется цикл, расположено в заголовке, то в этой конструкции условие располагается в конце цикла:
Do
конструкции
Loop While условие
При использовании этой формы оператора тело цикла выполняется хотя бы один раз, после чего осуществляется проверка заданного условия.
Есть еще две разновидности конструкции цикла Do. . .Loop. Данные операторы имеют следующий синтаксис:
Do Until условие
конструкции
Loop
и
Do
конструкции
Loop Until условие
Пример использования конструкции приведен ниже.
nCounter = 2
Do While nCounter < 10
nDecades(nCounter) = nCounter * 2
nCounter = nCounter * 2
Loop
ПРИЛОЖЕНИЕ А
Листинг программы 1
'Программа написана на VBA Благиревым Артемом Михайловичем гр.ПО - 03в
'Донецкий Институт Искусственного Интеллекта - 2004г
Private Sub CommandButton1_Click()
Dim a(10, 10) As Single
Dim i, j, k, d, m, n, max As Integer
Dim s(10) As Single
For i = 1 To 10
For j = 1 To 10
For k = i + 1 To 10
Open "C:\base.dat" For Input As #1
Do While Not EOF(1)
max = 0
Input #1, a(i, j)
a(i, j) = Cells(i, j).Value
d = (a(i, j) - a(k, j)) ^ 2
s(i) = Sqr(d)
If max < s(i) Then
s(i) = max
Range("A8").Value = max
End If
Loop
Close #1
Next k
Next j
Next i
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
Листинг программы2
' Программа написана на VBA Благиревым Артемом Михайловичем гр.ПО - 03в
'Донецкий Государственный Институт Искусственного Интеллекта - 2004г
Private Sub CommandButton1_Click()
Dim результат, предложение1, предложение2 As String
'ввод предложения
предложение1 = CStr(TextBox1.Text)
предложение2 = CStr(TextBox2.Text)
'основной код программы
результат = StrComp(предложение1, предложение2, 1)
If результат = 0 Then
TextBox3.Text = "Предложения равны!"
Else: TextBox3.Text = "Предложения не равны!"
End If
End Sub
Private Sub CommandButton2_Click()
Userform1.hide
End Sub
Private Sub CommandButton3_Click()
Open "c:\file.txt" For Output As #1
Print #1, "Первое предложение ->"; TextBox1.Text
Print #1, "Второе предложение ->"; TextBox2.Text
Print #1, "Результат ->"; TextBox3.Text
Close #1
MsgBox "Файл создан, данные успешно записаны", vbInformation, "Запись"
End Sub
Private Sub CommandButton4_Click()
Open "c:\base.txt" For Input As #2
Do While Not EOF(2)
Input #2, предложение1, предложение2
TextBox1.Text = предложение1
TextBox2.Text = предложение2
Loop
Close #2
MsgBox "Данные успешно введены", vbInformation, "Ввод данных"
End Sub
ПРИЛОЖЕНИЕ Б
Экранные формы
Рисунок 1.1 – В начале работы приложения 1
Рисунок 1.2 - Окно открытия файла с исходными данными и результат работы приложения 1
Рисунок 2.1 – В начале работы приложения 2
Рисунок 2.2 – Окно открытия файла с исходными данными
Рисунок 2.3 – Результат работы программы
... консультации, зачеты, экзамены, курсовые и дипломные работы. Очевидным является потребность вузов в необходимом количестве компьютерных технических и программных средств, в освоении профессорско-преподавательским составом современных компьютерных технологий вообще и обучения в частности, в соответствующей подготовке студентов буквально с первого курса обучения в вузе (знание основ компьютерной ...
... человека на образование и получение информации. В решении коллегии Госкомвуза 1993 года "О создании системы дистанционного образования в РФ" говорится: "Дистанционное образование - это форма образования, обеспечивающая использования новейших технических средств и информационных технологий для доставки учебных материалов и информации непосредственно потребителю независимо от его местоположения". ...
... тематикой и общими принципами оформления. Создание и применение на уроке электронных презентаций на сегодняшний день весьма актуально, как и разработка общих методических принципов для них. В качестве примера возьмем урок информатики в 7 классе по теме «Системы счисления». II. Авторская разработка урока по информатике «Системы счисления» Первое занятие из 7-х учебных часов. Цели урока: ...
... сферы интеллектуальной деятельности, принесло с собой совершенно новые представления о возможностях обработки информации, новые приемы и формы работы, новый уровень информационной обеспеченности общества. В этом смысле есть все основания говорить о наступлении эры компьютерных технологий как о новом витке цивилизации. Кстати, выражение "компьютерная цивилизация" действительно есть, оно реально ...
0 комментариев