Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Private Sub UserForm_Initialize()

End Sub

Далее нужно написать программу. Текст программы с комментариями приведен ниже (записаны после знака «'»). Все, что заключено в рамки в реальной программе отсутствует – это дополнительные объяснения.

Dim Obj As Object ' Вспомогательная переменная

Здесь объявляется новый для Вас тип переменной – Object. Переменная данного типа может содержать любой объект, который имеется в книге. В программе данная переменная будет содержать ячейку таблицы.

Dim i As Integer ' Вспомогательная переменная

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

Dim Count_Of_Note As Integer ' Число оценок

Dim Count2 As Integer ' Число двоек

Dim Count3 As Integer ' Число троек

Dim Count4 As Integer ' Число четверок

Dim Count5 As Integer ' Число пятерок

Объявляются переменные, которые будут содержать общее число оценок, число двоек, троек, четверок, пятерок.

' Выводим начальный размер минимальной стипендии

Label40.Caption = SpinButton1.Value

' Выводим начальный размер повышенной стипендии

Label41.Caption = SpinButton2.Value

' Выводим начальный размер именной стипендии

Label42.Caption = SpinButton3.Value

Выводим значения объектов класса «Счетчик» на экран. Данные значения будут содержать объекты класса «Надпись», расположенные рядом. Обратите внимание на то, как осуществляется доступ к свойствам объекта. Он производится через точку. Несмотря на то, что свойство Value является числом, а Caption текстом, преобразование типов данных не нужно. Откуда взять название объектов класса «Надпись» – из окна свойств, там необходимо посмотреть главное свойство любого объекта – Name.

НЕ нашли? Не то? Что вы ищете?

' Обнуляем количество оценок

Count2 = 0: Count3 = 0: Count4 = 0: Count5 = 0

Count_Of_Note = 0

' Обнуляем количество студентов

Student2 = 0: Student3 = 0: Student4 = 0: Student5 = 0

' Просмотрим каждую ячейку в диапазоне двоек

For Each Obj In Worksheets("Сессия").Range("ao17:ao316")

Count2 = Count2 + Obj. Value ' Суммируем число двоек

' Считаем двоечников

If Obj. Value > 0 Then

Student2 = Student2 + 1

End If

Next Obj

Код участка программы можно выразить следующей блок-схемой (рис. 84).

Рис. 84. Блок-схема участка программы.

Здесь перебираются все ячейки в диапазоне от AO17 до AO316 на листе с названием "Сессия", что является диапазоном количества двоек у каждого студента. За перебор отвечает цикл For Each .. InNext. Переменная Count2, содержащая количество двоек наращивается на величину Obj. Value, которая содержит значение ячейки (числовое или текстовое). Если попадется текст в этом диапазоне, то возникнет ошибка несоответствия типа (пытаемся числовой переменной прибавить текст). В этом же цикле удобно подсчитать количество двоечников. Если у ячейки значение Value не равно нулю, значит студент двоечник. Конечно, если в таблице окажется случайно число 123 (а предметов всего 12), то программа это не учтет. Для этого надо добавить в условие сравнение Obj. Value < 13. Если значение ячейки не равно нулю, то необходимо увеличить переменную Student2 (количество двоечников) на единицу. Кроме того, данный код зависит от формул на листе, так как не считает число двоек у каждого студента, а использует уже подсчитанные значения и суммирует их.

' Просмотрим каждую ячейку в диапазоне троек

For Each Obj In Worksheets("Сессия").Range("ap17:ap316")

Count3 = Count3 + Obj. Value ' Суммируем число троек

Next Obj

' Просмотрим каждую ячейку в диапазоне четверок

For Each Obj In Worksheets("Сессия").Range("aq17:aq316")

Count4 = Count4 + Obj. Value ' Суммируем число четверок

Next Obj

' Просмотрим каждую ячейку в диапазоне пятерок

For Each Obj In Worksheets("Сессия").Range("ar17:ar316")

Count5 = Count5 + Obj. Value ' Суммируем число пятерок

' Считаем отличников

If Obj. Value = 12 Then

Student5 = Student5 + 1

End If

Next Obj

Число отличников можно найти как сумму студентов имеющих число пятерок равное количеству предметов (в нашем случае 12). Число троечников определяется сложнее, так как у "потенциального" троечника (число троек не равно нулю) могут быть двойки. Число хорошистов тоже определяется сложнее по той же причине.

' Число оценок равно сумме 2,3,4,5

Count_Of_Note = Count2 + Count3 + Count4 + Count5

Label13.Caption = Count_Of_Note ' Выводим на экран число оценок

Label14.Caption = Count2 ' Выводим количество двоек

Label15.Caption = Count3 ' Выводим количество троек

Label16.Caption = Count4 ' Выводим количество четверок

Label17.Caption = Count5 ' Выводим количество пятерок

' Вычисление процентов

' Процент двоек

Label18.Caption = Format(Count2 / Count_Of_Note, "0.00%")

Функция Format осуществляет преобразование числа в определенный формат. В данном случае функция Format преобразует число к процентному формату (умножает на 100) с двумя знаками после запятой – "0.00%").

' Процент троек

Label19.Caption = Format(Count3 / Count_Of_Note, "0.00%")

' Процент четверок

Label20.Caption = Format(Count4 / Count_Of_Note, "0.00%")

' Процент пятерок

Label21.Caption = Format(Count5 / Count_Of_Note, "0.00%")

' Просмотрим каждую ячейку в диапазоне оценок

For i = 17 To 316

' Считаем троечников

If Worksheets("Сессия").Range("ao" + Trim(Str(i))) = 0 And _

Worksheets("Сессия").Range("ap" + Trim(Str(i))) > 0 Then

Student3 = Student3 + 1

End If

' Считаем хорошистов

If Worksheets("Сессия").Range("ao" + Trim(Str(i))) = 0 And _

Worksheets("Сессия").Range("ap" + Trim(Str(i))) = 0 And _

Worksheets("Сессия").Range("aq" + Trim(Str(i))) > 0 Then

Student4 = Student4 + 1

End If

' Заносим успевающих студентов в список

If Worksheets("Сессия").Range("ao" + Trim(Str(i))) = 0 Then

ListBox1.AddItem (Worksheets("Сессия"). Range("aa" +

+ Trim(Str(i))). Value & " – " & _

Worksheets("Сессия"). Range("an" + Trim(Str(i))).Value)

End If

Next i

Знак подчеркивания ( _ ) означает, что строка программы продолжается на следующей физической строке. Подсчет троечников осуществляется так: если у студента количество двоек равно 0 и количество троек больше нуля, то он – троечник. Аналогично делается вывод по хорошистам. Интересным является способ создания списка успевающих студентов. Объект класса «Список» имеет метод AddItem. Данный метод добавляет одну строку в список. Строка должна представлять собой текст. В нашем случае текст составляется из фамилии (берется значение ячейки из столбца AA, и добавляется к нему через знак минуса (с помощью знаков &, которые соединяют текстовые строки) значение среднего балла (столбец AN)). Обратите внимание на формирование адреса ячейки: "aa" + Trim(Str(i)). Функция Str переводит числовое значение в строку текста (например, число 234 переводит в "234"), а функция Trim обрезает пробелы в начале и в конце строковой переменной (например, строку " 34е " преобразует в "34е"). Итак, поскольку адрес ячейки представляет собой текст, состоящий из названия столбца и номера строки, то для его формирования мы к названию столбца – AA (мы его знаем заранее) нужно добавить в виде текста номер строки (номера меняются в теле цикла). Поскольку у нас имеется номер строки в виде числа (значение переменной i), то нужно преобразовать его в текст. Функция Str переводит число в текст, однако, она добавляет в начале пробел (если число положительное) или минус (если число отрицательное). У нас число положительное, но пробел в имени ячейки недопустим, поэтому используется функция Trim.

' Всего студентов – вычисляется как сумма студентов всех категорий

Students = Student2 + Student3 + Student4 + Student5

Label22.Caption = Students ' Выводим на экран число студентов

Label26.Caption = Student2 ' Выводим количество двоечников

Label25.Caption = Student3 ' Выводим количество троечников

Label24.Caption = Student4 ' Выводим количество хорошистов

Label23.Caption = Student5 ' Выводим количество отличников

' Выводим на экран процент

Label30.Caption = Format(Student2 / Students, "0.00%")

Label29.Caption = Format(Student3 / Students, "0.00%")

Label28.Caption = Format(Student4 / Students, "0.00%")

Label27.Caption = Format(Student5 / Students, "0.00%")

' Подсчитываем суммы стипендий

Label37.Caption = Student3 * SpinButton1.Value ' Минимальной

Label38.Caption = Student4 * SpinButton2.Value ' Повышенной

Label39.Caption = Student5 * SpinButton3.Value ' Именной

Сумма стипендий равна произведению числа студентов, получающих эту стипендию, на размер одной стипендии. Объекты класса «Счетчик» содержат размер одной стипендии для каждой категории студентов.

' Стипендиальный фонд

Label32.Caption = Student5 * SpinButton3.Value + Student4 * SpinButton2.Value + Student3 * SpinButton1.Value

Выход обратно из модуля к виду объекта класса UserForm можно выполнить, нажав мышью кнопку «Объект» в окне проекта, либо дважды нажав мышью на самом объекте UserForm.

После записи этой программы необходимо еще заставить программу реагировать на нажатия пользователя на счетчики. Для этого нажмите два раза кнопкой мыши на первом объекте класса «Счетчик». Вы увидите новую "заготовку" под процедуру:

Private Sub SpinButton1_Change()

End Sub

Данная процедура будет обрабатывать событие «Change», которое возникает при изменении значения счетчика пользователем (во время работы программы). Необходимо написать следующий код в "заготовке":

' Выводим измененный размер минимальной стипендии

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30