VBA — Блог по программированию https://ot7.ru Курсы по веб дизайну, программированию, графике и дизайну Thu, 28 Nov 2019 21:38:17 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.7.2 https://ot7.ru/wp-content/uploads/2019/11/cropped-it2-32x32.jpg VBA — Блог по программированию https://ot7.ru 32 32 Задачи на массивы. https://ot7.ru/2017/10/28/%d0%b7%d0%b0%d0%b4%d0%b0%d1%87%d0%b8-%d0%bd%d0%b0-%d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2%d1%8b/ Sat, 28 Oct 2017 04:19:44 +0000 http://manuscript.ikurs.kz/?p=2185 Задания на одномерные массивы.
1. Заполнить массив числами от 1 до 100 и вывести его в консоль.
2. Заполнить массив числами от 100 до 1 и вывести его в консоль.
3. Заполнить массив числами от -50 до 50 и вывести его в консоль.
4. Заполнить массив случайными числами и вывести его в консоль.
5. Заполнить массив случайными числами и найти максимальное значение.
6. Заполнить массив случайными числами и найти минимальное значение.
7. Заполнить массив случайными числами и удалить из него все элементы в которых записано число 2.
8. Заполнить массив случайными числами и выполнить его сортировку.
9. Заполнить массив случайными числами и найти в нем все значения которые повторяются более одного раза.
10. Заполнить два массива случайными числами и найти значения которые не повторяются в обоих массивах. Если число находится в обоих массивах то его не нужно выводить. Вывести нужно только те значения которые есть только в одном массиве.
Задания на двумерные массивы.

  1. Создать двумерный массив и заполнить в его ячейки таблицу умножения.
  2. Создать двумерный массив и заполнить две его диагонали единицами.
  3. Создать двумерный массив и заполнить его рамочку единицами.
  4. Решить задачу о 8ми ферзях. Широко известная задача по расстановке фигур на шахматной доске. Исходная формулировка: «Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого». Подразумевается, что ферзь бьёт все клетки, расположенные по вертикалям, горизонталям и обеим диагоналям.
  5. Решить обобщенную задачу о ферзях. Расставить максимальное количество взаимно не бьющих друг друга ферзей на прямоугольном поле, в частности, квадратном поле, со стороной n.

 

]]>
Задания на циклы https://ot7.ru/2017/10/26/%d0%b7%d0%b0%d0%b4%d0%b0%d0%bd%d0%b8%d1%8f-%d0%bd%d0%b0-%d1%86%d0%b8%d0%ba%d0%bb%d1%8b/ Thu, 26 Oct 2017 05:04:33 +0000 http://manuscript.ikurs.kz/?p=2179 Задание:

  1. Вывести в столбец значения от 0 до 100
  2. Вывести в столбец значения от 100 до 0
  3. Вывести в столбец значения от 60 до 100
  4. Вывести в столбец значения от -39 до 100
  5. Вывести в строку четные числа
  6. Вывести в строку нечетные числа.
  7. Вывести в строку ряд 100 200 300 …..
  8. Вывести рисунки как на картинке ниже используя циклы

 

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1

1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1

0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1

1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0

0 1 1 1 1 1 1 1 1
0 0 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 0 0
1 1 1 1 1 1 0 0 0
1 1 1 1 1 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1 1
0 0 0 1 1 1 1 1 1
0 0 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1 1
0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 0

1 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 1 1 0 0 0 0
1 1 1 1 0 0 0 0 0
1 1 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 1
1 1 0 0 0 0 0 1 1
1 1 1 0 0 0 1 1 1
1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1
1 1 1 0 0 0 1 1 1
1 1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 0 1

1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1
1 0 1 1 1 1 1 0 1
1 0 1 0 0 0 1 0 1
1 0 1 0 1 0 1 0 1
1 0 1 0 0 0 1 0 1
1 0 1 1 1 1 1 0 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 0 1
1 0 0 0 0 0 1 0 1
1 0 1 1 1 0 1 0 1
1 0 1 0 0 0 1 0 1
1 0 1 1 1 1 1 0 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1

]]>
Программирование макросов в EXCEL используя Visual Basic for Applications в Караганде. Программа курса. Обучающий центр IKurs.kz https://ot7.ru/2017/02/23/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bc%d0%b0%d0%ba%d1%80%d0%be%d1%81%d0%be%d0%b2-%d0%b2-excel-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c/ Thu, 23 Feb 2017 09:48:54 +0000 http://manuscript.ikurs.kz/?p=2085 В нашем центре проводятся индивидуальные занятия по обучению как программировать макросы в EXCEL.

VBA (Visual basic for applicaions)  — инструмент позволяющий создавать макросы и автоматизировать рутинные операции в таблицах Excel.

 

Курс углубленного изучения Excel в Караганде.

Программа курса по написанию макросов в Excel

  1. Запись собственных макросов и их изучение. Запись данных в ячейки.
  2. Обращение к рабочим листам и книгам. Навигация по ячейкам. Относительная и абсолютная адресация.
  3. Переменные, операции с ними и операторы сравнения.
  4. Массивы и операции с ними.
  5. Условия If, Select Case.
  6. Циклы For, While, Foreach.
  7. Простые алгоритмы поиска и сортировки.
  8. Собственные функции и процедуры.
  9. Строковые функции.
  10. Выпадающие списки.
  11. Пользовательские формы.
  12. События в Excel.

 

]]>
Циклы в Visual Basic (VBA) https://ot7.ru/2016/05/29/%d1%86%d0%b8%d0%ba%d0%bb%d1%8b-%d0%b2-visual-basic-vba/ Sun, 29 May 2016 05:29:53 +0000 http://manuscript.ikurs.kz/?p=1561 Простой одинарный цикл
Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

В данном примере ячейки в первом столбце в строках от одного до 6 будут заполнены значением 100

Одинарный цикл используется для изменения значений в одной строке или в одном столбце.

single-loop

В рассмотренном примере строки между for i и next i повторяются 6 раз. Начинается цикл выполняться со значения i=1 и в ячейку Cells(i,1) записывается значение 100. Далее программа доходит до оператора next i который увеличивает значение i на один, теперь i=2 и выполнение программы переходит снова к оператору for. Оператор for проверяет не превысило ли i конечное значение и если нет то выполняется тело цикла для значения 2. Так цикл выполняется 6 раз. И на 7 раз происходит выход из цикла и программа заканчивается.

Двойной цикл

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

В данном примере телом цикла for i является еще один цикл for j который выполняется для каждого значения i в результате для первой строки i=1 выполняется цикл j в котором записываются значения 100 в первый и второй столбец так как j изменяется от 1 до 2. Далее мы переходим к следующему i и все повторяется для второй строки. В итоге выполнения цикла значениями 100 заполнятся два столбца.

Данный алгоритм применяется для работы с таблицами.

Тройной цикл.

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

В данном примере используется тройной цикл. В нем для первых трех листов выполняется двойной цикл. В результате в первых трех листах будут записаны значения 100 в 6 строк для первых двух столбцов

Do While цикл

any-number-of-rows

Для начала выполнения задания введите случайные 6 чисел в первый столбец.

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

Данный цикл выполняется до тех пор пока значение ячейки не пустое. Цикл while выполняется до тех пор пока выполняется условие которое идет после него ( в нашем случае пока ячейка не пустая. Cells(i, 1).Value <> «»). Такой цикл подойдет когда мы работаем с неизвестным количеством строк.

advanced-do-while-loop

Пример выполнения программы.

Добавьте значения в первый столбец в строки 7 и 8 и заново запустите макрос. Он выполнится для этих строк тоже так как они не пустые.

Цикл for each для Range

Dim rng As Range
Dim Cell As Range
Set rng = Range("A1:B6")

For Each Cell In rng
    Cell.Value = Cell.Value * Cell.Value
Next Cell

В данном примере мы задаем Range и возводим каждую ячейку этого диапазона в квадрат.

Цикл For Each переводится для каждого значения,

в нашем случае для каждой ячейки из диапазона (For Each Cell In rng)

Выполните цикл и проверьте что все значения из диапазона возведены в квадрат.

Проверка всех строк в столбце

For i = 1 To Rows.Count
    If Cells(i, 1).Value < 5 And Not IsEmpty(Cells(i, 1).Value) Then
        Cells(i, 1).Font.Color = vbRed
    End If
Next i

В данном примере мы используем Rows.Count — количество строк. Для Excel 2010 максимальное количество строк = 1 миллион. И в этом примере все не пустые строки со значениями <5 будут окрашены в красный цвет.

]]>
Строковые функции VBA https://ot7.ru/2016/05/14/%d1%81%d1%82%d1%80%d0%be%d0%ba%d0%be%d0%b2%d1%8b%d0%b5-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8-vba/ Sat, 14 May 2016 05:48:20 +0000 http://manuscript.ikurs.kz/?p=1550 Replace
Возвращает строку, в которой указанная подстрока заданное число раз заменена другой подстрокой.

Задание

Введите фразу Приветствую тебя мой друг в ячейку А1 и замените слово друг на слово брат. Результат запишите в ячейку А2.

Sub myReplace()4

Cells(1, 2).Value = Replace(Cells(1, 1).Value, "äðóã", "áðàò")
End Sub

Результат:

Split
Возвращает одномерный массив (с индексацией от нуля), содержащий указанное число подстрок.

Задание. Введите имена в ячейку А1 через пробел и запишите их в столбец ниже разбив по пробелу.

Sub MySplit()
arr = Split(Cells(1, 1).Value, " ")
Cells(2, 1).Value = arr(0)
Cells(3, 1).Value = arr(1)
Cells(4, 1).Value = arr(2)
Cells(5, 1).Value = arr(3)
Cells(6, 1).Value = arr(4)
End Sub

Результат:

 

StrComp
Возвращает -1, 0 или 1 в зависимости от результата сравнения строк.

Ноль означает что строки равны. -1 означает что первая строка меньше второй 1 означает что первая больше второй.

Sub myStrComp()
Res = StrComp(Cells(1, 1).Value, Cells(1, 2).Value)
If (Res = 0) Then
Cells(1, 3).Value = "Строки равны"
Else
Cells(1, 3).Value = "Строки не равны"
End If

End Sub

Задание

Ввести в ячейки A1 и А2 две строки и сравнить их с помощью StrComp

Trim
Возвращает строку, содержащую копию указанной строки без пробелов в начале и конце.

Данная функция нужна в случае если пользователь случайно может добавить пробел в начале или в конце слова. Это часто случается при копировании отдельных значений из текста. В процессе выделения пользователь случайно выделяет пробелы и значение копируется с пробелами.

Задание:

Написать макрос по проверке наличия пробелов в начале или в конце ячейки

В начале нужно записать новое значение взятое из ячейки с помощью trim в соседнюю ячейку и потом сравнить два значения. Если они равны то вывести сообщение о том что пробелов нет. Иначе вывести сообщение что пробелы есть.

InStr

Функция возвращает позицию одного слова в другом. Не работает с кирилическими символами

Пример

res=InStr(«Tech on the Net», «T»)

Вернет 1. Это позиция буквы T во фразе Tech on the Net

Задание:

Ввести два значения в разные ячейки и найти одно значение в другом. В третью ячейку вывести позицию в которой находится фраза.

Если результат ноль то вывести что совпадений не найдено.

]]>
Программирование макросов в Excel Урок 1. https://ot7.ru/2016/04/02/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bc%d0%b0%d0%ba%d1%80%d0%be%d1%81%d0%be%d0%b2-%d0%b2-excel-%d1%83%d1%80%d0%be%d0%ba-1/ Sat, 02 Apr 2016 13:44:54 +0000 http://manuscript.ikurs.kz/?p=1502 Отображение вкладки «Разработчик»
  • Откройте вкладку Файл.
  • Выберите пункт Параметры.
  • Выберите пункт Настроить ленту.
  • В разделе Настройка ленты в списке Основные вкладки установите флажок Разработчик.

Что такое макрос в Excel и зачем он нужен?

  • Макросы применяются для автоматизации выполнения повторяющихся задач в Microsoft Office Excel. В Excel можно быстро записать макросМакрос можно создать, используя редактор Visual Basic в среде Microsoft Visual Basic или путем копирования всего макроса или его части в новый макрос.

Создание нового макроса

  • Откройте вкладку Разработчик
  • Выберите пункт Макросы
  • Введите имя макроса
  • Нажмите кнопку создать
  • В открывшемся окне появится блок программы в котором будет находится программа макроса.

Sub Макрос1()

End Sub

 

Задание: 

  1. Создайте макрос.

Запись макроса

  • Откройте вкладку Разработчик
  • Выберите пункт меню запись макроса
  • Выполните в таблице действия которые вы хотите записать в макрос
  • Нажмите остановить запись

 

  • Режим запись макроса идеально подходит для исследования различных объектов и их методов языка VBA

Задание 

  1. Создайте макрос. 
  2. Выполните действия в книге Ексель. 
  3. Остановите запись макроса.
  4. Просмотрите его код.
  5. Выполните макрос.

Создание пользовательской формы в VBA

ss (2016-04-23 at 09.10.38)

Пользовательскую форму можно создать в VBA в меню insert->UserForm

Форма это Окно виндовс которое позволяет создавать пользовательский интерфейс для управления макросами.

Для запуска формы нужно воспользоваться методом Show.

Пример макроса который запускает форму.

Sub macros()

UserForm1.Show

End Sub

 

ss (2016-04-23 at 09.21.31)

Чтобы открыть вкладку с макросами щелкните по Module1

Для того чтобы открыть редактор форм щелкните по UserForm1

ss (2016-04-23 at 09.22.23)

Переменные в VBA

  • Переменные используются для хранения значений используемых в макросах.
  • Переменные бывают различных типов и с ними необходимо уметь работать понимать их специфику и уметь преобразовывать один тип данных в другой.

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

Для объявления или, другими словами, создания переменной используется ключевое слово Dim;

Dim x As Integer

Объявление целочисленной переменной x;

 

x=10

Запись значения 10 в переменную x;

 

x=x+10

Увеличение переменной x на 10

 

x=x-10

Уменьшение переменной x на 10

 

Dim x As Integer
Dim y As Integer
Dim z As Integer

Сложение двух переменных

z=x+y

 

 

Смена двух переменных местами.

z=x

x=y

y=z

 

Запись данных в ячейки таблицы использование объекта Range.

  • Range(«A1»).Value = 10 — Запись значений в ячейку (10 – числовые данные записываются без кавычек)
  • Range(«K9:R9»).Value = Текст – Запись значений в строку. (“Текст” – текстовые данные записываются в кавычках)
  • Range(«K9:K29»).Value = 10 – Запись значений в столбец (Указываем диапазон адресов ячеек)
  • Range(«K9:R29″).Value = 10 – Запись значений в выбранный диапазон (Указываем диапазон адресов ячеек)

Задание:

  1. Записать значение в одну ячейку.
  2. Заполнить нулями строку.
  3. Заполнить нулями Столбец.
  4. Записать различные текстовые значения в две ячейки.
  5.  Записать различные числовые значения в две произвольные ячейки
  6. Записать значения из ячеек в переменные x и y
  7. Поменять местами переменные x и y
  8. Поменять местами значения в ячейка из которых взяли x и y

Целочисленные переменные и математические операции

Dim x As Integer
x = 8.6 ' Обратите внимание в x будет записано значение 9
Dim y As Integer
y = 26
Range("A1").Value = "x + y"
Range("A2").Value = "x - y"
Range("A3").Value = "x * y"
Range("A4").Value = "x/y"
Range("B1").Value = x + y
Range("B2").Value = x - y
Range("B3").Value = x * y
Range("B4").Value = x / y

Обратите внимание на комментарий который оставлен в программе с помощью символа  ‘
Чаще комментируйте свои программы. 

В результате выполнения макроса вы должны увидеть данные как на рисунке ниже

Задание:

Создать макрос который выведет значения как на рисунке ниже.

ss (2016-04-02 at 04.45.00)

 

Строковые переменные String

Dim book1 As String
Dim book2 As String
book1 = "Книга1"
book2 = "Книга2"
Range("A1").Value = book1+"; "+book2

Результат выполнения программы

Задание:

  1. Сложить две строковые переменные и записать в ячейку A1
  2. Записать любые текстовые значения в ячейки А2 А3
  3. Поменять значения ячеек A2 и А3 местами.

ss (2016-04-02 at 05.00.42)

Double Дробные числа

Dim x As Double
x = 5.5
MsgBox "Значение переменной х=" & x

`Оператор & создает текстовую строку из различных типов данных

В этой программе мы использовали новую функцию MsgBox. Она выводит сообщение с текстом который идет после нее.

 Задание:

  1. Объявить две переменные с плавающей точкой. 
  2. Сложить их.
  3. И результат вывести в ячейку А1
  4. Объявить две целочисленные переменные и записать в них дробные значения. 
  5. Сложить их.
  6. Результат вывести в ячейку A2

Циклы For Next

Немного терминологии

  1. Последовательность инструкций, предназначенная для многократного исполнения, называется телом цикла.
  2. Единичное выполнение тела цикла называется итерацией.
  3. Выражение определяющее, будет в очередной раз выполняться итерация, или цикл завершится, называется условием выхода или условием окончания цикла
  4. Переменная, хранящая текущий номер итерации, называется счётчиком итераций цикла или просто счётчиком цикла.Исполнение любого цикла включает первоначальную инициализацию переменных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того, большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода

algori3

'Простой цикл:
Dim i As Integer
For i = 1 To 100
Range("C" & i).Value = i
Next i

'Цикл с шагом:
For i = 1 To 100 Step 2
Range("B" & i).Value = i
Next i

 

`Цикл с записью значений в ячейки
For i = 1 To 100
Cells(i, i) = i
Next i

`Вложенный цикл с записью значений в ячейки
Dim j As Integer
For i = 1 To 100
For j = 1 To 100
Cells(i, j) = i * j
Next j
Next i

' для преждевременного выхода из цикла можно использовать Exit For

Задание:

  1. Вывести в столбец значения от 0 до 100
  2. Вывести в столбец значения от 100 до 0
  3. Вывести в столбец значения от 60 до 100
  4. Вывести в столбец значения от -39 до 100
  5. Вывести в строку четные числа
  6. Вывести в строку нечетные числа.
  7. Вывести в строку ряд 100 200 300 …..

 

Оператор if — Оператор ветвления

Оператор ветвления применяется в случаях, когда выполнение или невыполнение некоторого набора команд должно зависеть от выполнения или невыполнения некоторого условия. Ветвление — одна из трёх (наряду с последовательным исполнением команд и циклом) базовых конструкций структурного программирования.

В зависимости от значения выражения будет выполнена та или иная группа операторов.

If выражение then

Выполняем программу

endif

В качестве выражения могут быть следующие операторы

A=B    —  РАВНО

A<B    —  МЕНЬШЕ

A>B    —  БОЛЬШЕ

A<=B —  МЕНЬШЕ ИЛИ РАВНО

A>=B — БОЛЬШЕ ИЛИ РАВНО

A<>B — НЕ РАВНО

Полная запись оператора if

Dim I as integerIf count = 0 Then 
…
ElseIf count = 1 
…
Else 
…
End If

 

Задание

  1. Записать в таблицу произвольные значения.
  2. С помощью цикла поменять знак у значений которые больше пяти.
  3. Записать произвольные числа в два столбца.
  4. Записать сумму двух ячеек первых двух столбцов в третий столбец используя циклы.

 

Вложенный цикл с условиями.

For i = 1 To 100
    For j = 1 To 100
        Cells(i, j) = ""
        If i * j > 1000 Then
            Cells(i, j) = ">"
        ElseIf i = 100 Or j = 100 Then
            Cells(i, j) = "100"
        Else
            Cells(i, j) = "<"
        End If
    Next j
Next i

Преобразование типов данных

Очень часто возникает необходимость преобразовать один тип данных в другой.

Для этого в Бейсике есть набор функций для преобразования типов данных.

 

CDbl(значение) — Преобразует в double

CInt(значение) — Преобразует в Int

CStr(значение) — Преобразует в строку

 

Задание 1.

В ячейки А1-А10 записать произвольные значения. Вывести в ячейку А11 ячейки А1-А10 через точку с запятой

Задание 2. 

Объявить целочисленные переменные A и B и задать им значения 34 и 16.

Записать в столбец А

А+B=

A-B=

A*B=

A/B=

В столбец B вывести значения расчетов.

Задание 3

В цикле вывести значения от 1 до 100 в столбец А

Задание 4

В цикле вывести значения от -50 до 50 в столбец А

Задание 5

Вывести в столбец А в цикле все четны числа от 1 до 20

Задание 6

Задать произвольные значения в ячейках A1-A20

Записать в эти ячейки три раза 10 и посчитать сколько раз встречается цифра 10 в ячейках А1-А20

Результат вывести в ячейку А21

Задание 7

В столбцы А и записать по 10 произвольных значений.

В столбец C вывести значения которые являются уникальными для столбца А и для B

В столбец D вывести значения которые есть в обоих столбцах А и B

Задание 8.

Ввести произвольные значения в столбец А

и развернуть их в строку 1.

Задание 9

Записать в таблицу размером 10×10 нули и единицы в шахматном порядке

010101
101010
010101

Задание 10

записать в таблицу 10х10 значения координат ячеек

1;1 1;2 1;2
2;1 2;2 2;3

Развернуть таблицу  на 90 градусов и скопировать в соседний лист. найти функцию копирования ячеек и переноса их в другой лист с использованием функции записать макрос.

 

 

 

 

]]>