Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Листинг 17.4. Код формы frm_Out (html, txt)




Теперь рассмотрим код модуля формы frm_Balance

Код формы frm_Balance

В листинге 17.5. вы можете найти код модуля формы frm_Balance. Здесь мы вычисляем баланс доходов и расходов по всей таблице. Вычисления ведутся в коде обработчика события Activate.

Private Sub cmd_OK_Click()

frm_Balance.Hide

End Sub

 

Private Sub UserForm_Activate()

'Адрес строки

Dim num_Address

'Переменная для хранения суммы доходов

Dim num_Earn

'Переменная для хранения суммы расходов

Dim num_Spend

For i = 1 To ActiveSheet.Range("B1") - 1

num_Address = i + ActiveSheet.Range("B2")

'Если в строке хранится значение дохода

'добавим его в num_Earn

If ActiveSheet.Cells(num_Address, 3) = "Доход" _

Then

num_Earn = num_Earn + _

ActiveSheet.Cells(num_Address, 4)

End If

'Если в строке хранится значение расхода

'добавим его в num_Spend

If ActiveSheet.Cells(num_Address, 3) = "Расход" _

Then

num_Spend = num_Spend + _

ActiveSheet.Cells(num_Address, 4)

End If

Next i

lbl_Balance = num_Earn - num_Spend

If num_Earn > num_Spend Then _

lbl_Msg = "Доходы больше расходов."

If num_Earn = num_Spend Then _

lbl_Msg = "Доходы равны расходам."

If num_Earn < num_Spend Then _

lbl_Msg = "Доходы меньше расходов."

End Sub

Листинг 17.5. Код формы frm_Balance (html, txt)

Задача об обмене значениями

17-02-Обмен значений.xlsm - пример к п. 17.2.

Условие

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

Решение

Предположим, что имеются 2 переменные (А и В), содержащие числа. Для обмена значениями этих переменных достаточно произвести следующие действия:

  1. Сложить А и В и результат записать в А
  2. Вычесть из А переменную В и записать результат в В.
  3. Вычесть из А переменную В и записать результат в А.

Для решения задачи будем считать, что число A записано в ячейку B2, число В - в ячейку C2. Подпишем соответствующим образом эти ячейки и разместим на рабочем листе кнопку с именем cmd_Change и надписью Обменять А и В (рис. 17.6.)


Рис. 17.6. Рабочий лист, подготовленный для решения задачи

В листинге 17.6. вы можете найти программный код для решения задачи, размещенный в обработчике события Click для кнопкиcmd_Change

'Сохраняем сумму ячеек в B2

ActiveSheet.Range("B2") = _

ActiveSheet.Range("B2") + _

ActiveSheet.Range("C2")

'Разность сохраняем в С2

ActiveSheet.Range("C2") = _

ActiveSheet.Range("B2") - _

ActiveSheet.Range("C2")

'И еще раз разность в B2

ActiveSheet.Range("B2") = _

ActiveSheet.Range("B2") - _

ActiveSheet.Range("C2")

Листинг 17.6. Решение задачи (html, txt)

Перевод чисел из одной системы счисления в другую

17-03-Системы счисления.xlsm - пример к п. 17.3.

Условие

Перевести заданное пользователем целое число A из одной системы счисления (P) в другую (Q). P и Q могут изменяться от 2 до 10.

Решение

MS Excel содержит функции для преобразования чисел между различными системами счисления, однако здесь мы создадим универсальное решение. Вы сможете встроить этот код в свои проекты. При необходимости вы сможете доработать его так, чтобы он смог работать с системами счисления, основание которых превышает 10.

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

Перевод в десятичную систему счисления осуществляется в два этапа:

  1. Разбиение введенного числа на отдельные цифры
  2. Получение десятичного числа по следующему алгоритму:

Первую цифру числа в системе счисления с основанием Q нужно умножить на Q в нулевой степени. Полученное число прибавить к произведению второй цифры числа, умноженную на Q в 1-й степени и так далее. Например:

Перевод из двоичной системы в десятичную:

1101 =1*2^3+1*2^2+0*2^1+1*2^0=8+4+0+1=13

Перевод из пятеричной системы в десятичную:

1042=1*5^3+0*5^2+4*5^1+2*5^0=125+0+20+2=147

Перевод в систему счисления с основанием Q из системы с основанием 10 осуществляется путем накапливания остатков от деления этого числа на Q с последующим изменением этого числа целочисленным делением его на Q до тех пор, пока переводимое число не станет равным 0.

Для решения этой задачи нам понадобится форма, содержащая следующие элементы управления (табл. 17.6.). У текстовых полей свойство AutoSize установлено в True.

Таблица 17.6. Элементы управления
Имя элемента управления Подпись и примечания
cmd_OK Перевести. Кнопка для перевода чисел
txt_P Из системы P. Текстовое поле для хранения основания системы счисления P.
txt_Q В систему Q. Поле для хранения основания системы счисления Q
txt_A Число для перевода. Число, заданное для перевода из системы P в Q
txt_B Результат. Текстовое поле для вывода результата перевода

На рис. 17.7. вы можете увидеть форму программы.


Рис. 17.7. Форма программы для перевода чисел из одной системы счисления в другую

В листинге 17.7. вы можете найти код события Click для кнопки cmd_OK.

'Для хранения основания системы P

Dim num_P

'Для хранения основания системы Q

Dim num_Q

'Для хранения числа в 10-й системе

Dim num_10

'Для хранения очередного числа в

'системе счисления Q

Dim num_S

num_P = Val(txt_P)

num_Q = Val(txt_Q)

'Переводим введенное число из

'системы счисления P

'в десятичную систему

For i = 1 To Len(txt_A)

num_10 = num_10 + Val(Mid(txt_A, i, 1)) * _

num_P ^ (Len(txt_A) - i)

Next i

'Переводим число из десятичной системы

'в систему с основанием Q

txt_B = ""

While num_10 <> 0

'Остаток от деления запишем в str_S

num_S = num_10 Mod num_Q

'Запишем очередное число в

'окно для вывода результата

txt_B = Mid(Str(num_S), 2, 1) + txt_B

'Запишем в num_10 результат

'целочисленного деления

'num_10 на основание системы

'счисления Q

num_10 = num_10 \ num_Q

Wend





Поделиться с друзьями:


Дата добавления: 2016-09-06; Мы поможем в написании ваших работ!; просмотров: 387 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Вы никогда не пересечете океан, если не наберетесь мужества потерять берег из виду. © Христофор Колумб
==> читать все изречения...

2282 - | 2104 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.