ЧАСТЬ 3

ИНФОРМАТИКА

Электронное учебно-методическое пособие

 

 
 

 

  1. Следующей разновидностью оператора цикла является оператор While_Wend.

Его невозможно прервать – нет Exit Do. Он имеет следующую конструкцию:

While <условие>

<блок операторов>

Wend


Пример: Бросается игральная кость до выпадения 6 очков.

Dim Бросок As integer, Очки As integer

Randomize

Очки = Int(6*Rnd())+1

Бросок = 1

While Очки<6

Бросок = Бросок + 1

Очки = Int (6+ Rnd ())+1

Wend

MsgBox “Победили на броске” & CStr(Бросок)

  1. Циклический оператор For Each_Next относится к операторам объектного типа, т. е. применяется к массивам и наборам элементов. Имеет вид:

For Each <элемент>In<набор>

[<блок операторов >]

[Exit For] – используется для прерывания цикла

[<блок операторов >]

Next [<элемент>]


Пример
1: Суммирование элементов массива

Dim A As Variant

Dim b, s as Integer

A = Array (1, 4, 12, 23, 34, 3, 23)

S = 0

b=InputBox (" введите с клавиатуры значение для b ")

For Each b in A

S=S+b

Next b


Пример 2:

S = 0

For Each с in Selection.Cells

S = S+c.value

Next c 'Из выделенного диапазона

MsgBox “S=”&CStr(S)


Пример 3: Работа с семейством рабочих листов – удаление из книги рабочего листа Тест.

For Each Лист in Worksheets

If Лист.Name = “Tест” then

Лист.Delete

End If

Next Лист


Пример 4: Работа с семейством ячеек в диапазоне А1 : С4, ячейки с положительными значениями окрашиваются в синий цвет, а с неположительными – в красный.

With Ячейка

if .value <=0 then

.Interior.ColorIndex =3

else .Interior.ColorIndex =5

End if

End With

Next Ячейка


Пример 5: Вычислить сумму элементов массива а(30), значения которых лежат в диапазоне [2], [5].

Private Sub CommandButton1_Click()

Dim а (30) Аs 1ntegег, i, k, sum Аs Integег

'внесение в массив значений элементов массива с рабочего листа

i = 1

Dо Whi1е i <= 30

а(i) = Се11s( (i + 1) , 1)

i = i + 1: Lоор

i =1

k = 1

sum = 0

Dо Whi1е i <= 30

If а(i) >= 2 And а(i) <= 5 Then

Лист1.Rаngе("В" & k + 1).vа1ue = i

k = k + 1

sum= sum + а (i)

End If

i=i + 1

Lоор

Лист1.Rаngе("С2").vа1uе = sum

End Sub

Privatе Sub СоmmandВutton2_С1iсk ()

Dim i Аs Integег

i = 1

Dо Whi1е i <= 30

Се11s ( (i + 1) , 2) = " "

i = i + 1

Lоор

Се11s (2, 3) = " "

End Sub


Можно использовать оператор цикла For_Next. Тогда программа примет вид, приведенный ниже:

Private Sub CommandButton1_Click()

Dim a(10) As Integer, i, k, sum As Integer

For i=0 to 9

a(i) = Cells((i + 1), 1)

Next i

k = 1

sum = 0

For i=0 to 9

If a(i) >= 2 And a(i) <= 5 Then

Лист1.Range("b" & k + 1).Value = i

k = k + 1

sum = sum + a(i)

End If

Next i

Лист1.Range("c2").Value = sum

End Sub


Пример 6: Оператор With избавляет программиста от использования большого количества повторений имени одного и того же объекта или работы с его свойствами и методами. Происходит структурирование кода, что делает его более прозрачным.

1 вариант:

With Range (“A1”)

.value = 3

.Font.Italic = True

End With


2 вариант:

With Range (“A1”)

.value = 3

With .Font

.italic = True

.size = 12

.Bold = True

.Color = RGB(255, 30, 255)

End With

End With

 

 


© Сибирская государственная геодезическая академия (СГГА), 2011