Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / Шпора ВБА.docx
Скачиваний:
199
Добавлен:
01.03.2016
Размер:
47.17 Кб
Скачать

Вопрос 23

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun1 (вставьте нужные операторы в заголовки уже созданной функции), которая вычисляет выражение по формуле:

(1-x)^2

fun1 = ----------

2 + 3x

Ответ: - 4,75

Тест 5.2-5.3

1) Какое значение получит переменная S после выполнения группы операторов VBA:

S = 1

For i = 2 To 5 Step -2

S = S - i

Next i

Ответ: 1

Какое значение получит переменная S после выполнения группы операторов VBA:

S = 1

For i = 5 To 2 Step 2

S = S + i

Next i

Ответ: 1

2) Дана последовательность операторов VBA:

x = 2

While x > 4

x = x + 1

Wend

Определить значение переменной x после их выполнения

Ответ: 2

3) Дана последовательность операторов VBA:

x = 2

While x < 4

x = x + 1

Wend

Определить значение переменной x после их выполнения

Ответ: 4

6) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-4^2+6^2-...+30^2.

Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.

Решение:

Public Function fun4()

Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer

s1 = 0

i1 = 2

While i1 <= 30

s1 = s1 + i1 ^ 2

i1 = i1 + 4

Wend

s2 = 0

i2 = 4

While i2 <= 28

s2 = s2 + i2 ^ 2

i2 = i2 + 4

Wend

fun4 = s1 - s2

End Function

Ответ: 672

7) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-3^2+4^2-...+20^2.

Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.

Решение:

Public Function fun4()

Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer

s1 = 0

i1 = 2

While i1 <= 20

s1 = s1 + i1 ^ 2

i1 = i1 + 2

Wend

s2 = 0

i2 = 3

While i2 <= 19

s2 = s2 + i2 ^ 2

i2 = i2 + 2

Wend

fun4 = s1 - s2

End Function

Ответ: 295,4

8) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=1-2^3+3^3-...-20^3.

Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.

Решение:

Public Function fun4()

Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer

s1 = 0

i1 = 1

While i1 <= 19

s1 = s1 + i1 ^ 3

i1 = i1 + 2

Wend

s2 = 0

i2 = 2

While i2 <= 20

s2 = s2 + i2 ^ 3

i2 = i2 + 2

Wend

fun4 = s1 - s2

End Function

Ответ: -6020

9) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-3^2+4^2-...+30^2.

Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.

Решение:

Public Function fun4()

Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer

s1 = 0

i1 = 2

While i1 <= 30

s1 = s1 + i1 ^ 2

i1 = i1 + 2

Wend

s2 = 0

i2 = 3

While i2 <= 29

s2 = s2 + i2 ^ 2

i2 = i2 + 2

Wend

fun4 = s1 - s2

End Function

Ответ: 652,4

10) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=1+2^2+3^2-...+25^2.

Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.

Решение:

Public Function fun4()

Dim s As Double, i As Integer

s = 0

i = 1

While i <= 25

s = s + i ^ 2

i = i + 2

Wend

fun4 = s

End Function

Ответ: 7735

11) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5, которая вычисляет сумму S=1-2^3+3^3-...-n^3.

Заголовок функции, который должен иметь вид: Function fun5(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.

Решение:

Public Function fun5(n As Integer) As Integer

Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer

s1 = 0

i1 = 1

While i1 <= n

s1 = s1 + i1 ^ 3

i1 = i1 + 2

Wend

s2 = 0

i2 = 2

While i2 <= n

s2 = s2 + i2 ^ 3

i2 = i2 + 2

Wend

fun5 = s1 - s2

End Function

Ответ: -23

12) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5, которая вычисляет сумму S=1-2^2+3^2-...-n^2.

Заголовок функции, который должен иметь вид: Function fun5(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.

Решение:

Public Function fun5(n As Integer) As Integer

Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer

s1 = 0

i1 = 1

While i1 <= n

s1 = s1 + i1 ^ 2

i1 = i1 + 2

Wend

s2 = 0

i2 = 2

While i2 <= n

s2 = s2 + i2 ^ 2

i2 = i2 + 2

Wend

fun5 = s1 - s2

End Function

Ответ: -8

13) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun6, которая вычисляет сумму n первых натуральных чисел Фибоначчи.

Заголовок функции, который должен иметь вид: Function fun6(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B9 значение введите в ответ теста.

Решение:

Public Function fun6(n As Double) As Double

Dim s As Double, p As Integer, i As Integer, k As Integer

s = 0

p = 1

i = 1

For k = 1 To n

s = p + i

p = i

i = s

Next k

fun6 = s - 1

End Function

Ответ:381

14) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7, которая вычисляет сумму квадратов цифр заданного числа n.

Заголовок функции, который должен иметь вид: Function fun7(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.

Решение:

Public Function fun7(ByVal n As Long) As Double

n = Abs(n)

Dim p

p = 0

While n <> 0

p = p + (n Mod 10) ^ 2

n = n \ 10

Wend

fun7 = p

End Function

Ответ: 4

15) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7, которая вычисляет произведение цифр заданного числа n.

Заголовок функции, который должен иметь вид: Function fun7(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.

Решение:

Public Function fun7(ByVal n As Long) As Double

n = Abs(n)

Dim p

p = 0

While n <> 0

p = p *n Mod 10

n = n \ 10

Wend

fun7 = p

End Function

Ответ: 2

Задание 1

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет количество четных чисел диапазона.

Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.

Решение:

Public Function fun9(a As Variant) As Double

Dim s As Double, i As Variant

s = 0

For Each i In a

If i Mod 2 = 0 Then s = s + 1

Next i

fun9 = s

End Function

Ответ: 7

Задание 2

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне K1:L4 активного Листа Excel находит наименьшее число. Результат процедура должна вернуть в ячейку B14.

Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.

На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.

Решение:

Public Sub Proc1()

Dim a As Range, i As Variant, s As Double

Set a = Range("K1:L4")

Min = a(1, 1)

For Each i In a

If i < Min Then Min = i

Next i

Cells(14, 2).Value = Min

End Sub

Ответ: -2

Задание 3

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel вычисляет количество четных положительных чисел. Результат процедура должна вернуть в ячейку B15.

Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.

На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.

Решение:

Public Sub Proc2()

Dim a As Range, i As Variant, s As Double

Set a = Selection

s = 0

For Each i In a

If i Mod 2 = 0 And i > 0 Then s = s + 1

Next i

Cells(15, 2).Value = s

End Sub

Ответ: 7

Задание 4

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

Заголовок функции, который должен иметь вид: Function fun10(A As Variant, K), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B13 значение введите в ответ теста.

Решение:

Public Function fun10(a As Variant, k As Double)

Dim s As Double, i As Variant

c = 0

For Each i In a

If i Mod k = 0 Then s = s + i

Next i

fun10 = s

End Function

Ответ: 5

Задание 5

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

Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.

Решение:

Public Function fun9(a As Variant) As Double

Dim s As Double, i As Variant

s = 0

For Each i In a

If i > 0 Then s = s + i

Next i

fun9 = s

End Function

Ответ:25

Задание 7

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel вычисляет сумму четных отрицательных чисел. Результат процедура должна вернуть в ячейку B15.

Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.

На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.

Решение:

Public Sub Proc2()

Dim a As Range, i As Variant, s As Double

Set a = Selection

s = 0

For Each i In a

If i Mod 2 = 0 And i < 0 Then s = s + i

Next i

Cells(15, 2).Value = s

End Sub

Ответ: -6

Задание 8:

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

Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.

Решение:

Public Function fun9(a As Variant) As Double

Dim s As Double, i As Variant

s = 0

For Each i In a

If i > 0 Then s = s + 1

Next i

fun9 = s

End Function

Ответ: 8

Задание 9:

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне K1:N4 активного Листа Excel вычисляет сумму отрицательных чисел. Результат процедура должна вернуть в ячейку B14.

Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.

На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.

Решение:

Public Sub Proc1()

Dim a As Range, i As Variant, s As Double

Set a = Range("K1:N4")

s = 0

For Each i In a

If i < 0 Then s = s + i

Next i

Cells(14, 2).Value = s

End Sub

Ответ: -6

Задание 10:

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel находит наибольшее число. Результат процедура должна вернуть в ячейку B15.

Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.

На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.

Решение:

Public Sub Proc2()

Dim a As Range, i As Variant, s As Double

Set a = Selection

Max = a(1, 1)

For Each i In a

If i > Max Then Max = i

Next i

Cells(15, 2).Value = Max

End Sub

Ответ: 140

Задание 1,2

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm2 (уже создана), которая на интервале от M до N находит сумму простых чисел. Результат должен быть получен в текстовом поле TextBox3 (Результат).

Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm2.

На листе 1 книги выполните форму UserForm2 и полученное в ячейке B19 значение введите в ответ теста.

Решение:

Открываем Userform2, 2 раза щёлкаем по кнопке Выполнить

Сначала пишем прогу для простых чисел

Public Function prostoe(ByVal n As Long) As Boolean

Dim i As Long

prostoe = True

If n > 1 Then

For i = 2 To Sqr(n)

If n Mod i = 0 Then

prostoe = False

Exit For

End If

Next i

Else

prostoe = False

End If

End Function

Потом пишем форму

Private Sub CommandButton1_Click()

m = Val(TextBox1.Text)

n = Val(TextBox2.Text)

Dim i As Long, s As Double

s = 0

For i = m To n

If prostoe(i) = True Then s = s + i

Next i

TextBox3.Text = Format(s)

End Sub

Нажимаем выполнить UserForm2 и, в появившемся окне, нажимаем на выполнить

Ответ: Сумма простых : 72

Если нужно найти количество , то вместо этого If prostoe(i) = True Then s = s + i, пишем If prostoe(i) = True Then s = s + 1

Ответ: Количество : 6

Задание 3,4.

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm1 (уже создана), которая среди трех заданых в форме чисел A, B, C , задающих коэффициенты квадратного уравнения, находит сумму корней уравнения. Если корней не существует, возвращает сово "нет". Результат должен быть получен в текстовом поле TextBox4 (Результат).

Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm1.

На листе 1 книги выполните форму UserForm1 и полученное в ячейке B18 значение введите в ответ теста.

Решение:

Private Sub CommandButton1_Click()

a = Val(TextBox1.Text)

b = Val(TextBox2.Text)

c = Val(TextBox3.Text)

Dim d As Double, x1 As Double, x2 As Double, s As Double

d = b ^ 2 - 4 * a * c

If d >= 0 Then

x1 = (-b + Sqr(d)) / (2 * a)

x2 = (-b - Sqr(d)) / (2 * a)

s = x1 + x2

TextBox4.Text = Format(s)

Else

TextBox4.Text = "Нет"

End If

End Sub

Ответ: 8

Если произведение корней, то вместо этого s = x1 + x2, пишем s = x1 * x2

Ответ: 15

Задание 1

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun1_1 (вставьте нужные операторы в загововки уже созданной функции), которая вычисляет выражение по формуле:

1-x^2

fun1_1 = ----------

2 - 3x

На листе 1 книги выполните функцию и полученное в ячейке B4 значение введите в ответ теста. Дробная часть числа от целой отделяется запятой. Правильно 1 / 1

Решение:

Public Function fun1_1(x)

fun1_1 = (1 - x ^ 2) / (2 - 3 * x)

End Function

Задание 2

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5_1, которая вычисляет сумму S=1-2^3+3^3-...-n^3.

Заголовок функции, который должен иметь вид: Function fun5_1(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.

Правильно 1 / 1

Решение:

Public Function fun5_1(N As Integer)

Dim s As Double

Dim i As Integer

Dim z As Integer

s = 0

z = 1

For i = 1 To N

s = s + z * (i ^ 3)

z = -z

Next i

fun5_1 = s

End Function

Задание:

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun8_1, которая подсчитывает количество русских букв "а" и "е" в заданом тексте S.

Заголовок функции, который должен иметь вид: Function fun8_1(S As String), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B11 значение введите в ответ теста. Правильно 1 / 1

Решение:

Public Function fun8_1(s As String)

Dim i As Integer

Dim p As Integer

p = 0

For i = 1 To Len(s)

If Mid(s, i, 1) = "a" Then

p = p + 1

ElseIf Mid(s, i, 1) = "e" Then

p = p + 1

End If

Next i

fun8_1 = p

End Function

Задание:

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA с именем fun3_1 для нахождения из трех произвольных чисел A, B, C суммы двух найбольших чисел.

Заголовок функции, который должен иметь вид: Function fun3_1(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.

Решение:

Public Function fun3_1(a, b, c)

If a < b Then

fun3_1 = c + b

Else

If b < c Then

fun3_1 = c + a

Else

fun3_1 = b + a

End If

End If

End Function

Задание:

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне L1:R4 активного Листа Excel находит наибольшее число. Результат процедура должна вернуть в ячейку B14.

Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.

На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.

Решение:

Public Sub Proc1()

Dim a As Range, i As Variant, s As Double

Set a = Range("L1:R4")

Max = a(1, 1)

For Each i In a

If i > Max Then Max = i

Next i

Cells(14, 2).Value = Max

End Sub

Задание:

В книге Excel "Данные к тесту VBA", размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm2 (уже создана), которая на отрезке [m+20;n] находит сумму простых чисел. Результат должен быть получен в текстовом поле TextBox3 (Результат).

Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm2.

На листе 1 книги выполните форму UserForm2 и полученное в ячейке B19 значение введите в ответ теста.

Решение:

Private Sub CommandButton1_Click()

M = Val(TextBox1.Text) + 20

N = Val(TextBox2.Text)

Dim i As Long, s As Double

s = 0

For i = M To N

If prostoe(i) = True Then s = s + i

Next i

TextBox3.Text = Format(s)

End Sub

Private Sub CommandButton2_Click()

UserForm2.Hide

End Sub

Public Function prostoe(ByVal N As Long) As Boolean

Dim i As Long

prostoe = True

If N > 1 Then

For i = 2 To Sqr(N)

If N Mod i = 0 Then

prostoe = False

Exit For

End If

Next i

Else

prostoe = False

End If

End Function

Задание:

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7_1, которая вычисляет количество простых чисел на отрезке [10..N].

Заголовок функции, который должен иметь вид: Function fun7_1(n), уже создан в модуле 1, необходимо только записать тело процедуры.

На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.

Решение:

Public Function fun7_1(n As Long)

Dim s As Long

Dim i As Long

Dim str As String

s = 0

str = 0

For i = 10 To n

For j = 1 To i

If i Mod j = 0 Then

s = s + 1

End If

Next j

If s = 2 Then str = str + 1

s = 0

Next i

fun7_1 = str

End Function

Задание:

В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию в модуле 1 с именем fun1_1 на VBA (вставьте нужные операторы в загововки уже созданной функции), которая вычисляет выражение по формуле:

(2x+1)^2

fun1_1 = ------------ - (x+2)^3

x+1

На листе 1 книги выполните функцию и полученное в ячейке B4 значение введите в ответ теста.

Решение:

Public Function fun1_1(x As Double) As Double

fun1_1 = (((2 * x + 1) ^ 2) / (x + 1)) - ((x + 2) ^ 3)

End Function