Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2016, 14:01   #1
merick
Пользователь
 
Регистрация: 31.10.2015
Сообщений: 30
По умолчанию Зарплата и рабочие часы

С помощью оператора For создайте процедуру с именем РабочиеЧасы, которая позволяет Вводить для пяти дней недели количество часов, отработанных в эти дни. Процедура также должна выводить окно сообщения с суммарным количеством рабочих часов за неделю.
Создайте другую процедуру и назовите ее Зарплата. Процедура должна считать недельную зарплату при условии по часовой оплаты. Предположим, что минимальная оплата рабочего часа составляет 6 у.е. Примените оператор Do…Loop для управления окном ввода, где пользователь должен ввести собственную почасовую ставку. Используйте суммарное количество рабочих часов в неделю, подсчитанное процедурой РабочиеЧасы. Итоговое сообщение выведите на экран с помощью окна сообщения.
Совет: Объявите переменную, содержащую суммарное количество рабочих часов в неделю, как глобальную (Public) переменную.
Проблема в следующем она не считает зарплату за рабочие часы.
Что нужно исправить?
Вот код:
Код:
Public vSum As Long
Sub РабочиеЧасы()
Dim vCounter As Long
Dim response As String
Dim vDOW As String
Dim vSum As Long
For vCounter = 1 To 5
    If vCounter = 1 Then
        vDOW = "Понедельник"
    ElseIf vCounter = 2 Then
        vDOW = "Вторник"
    ElseIf vCounter = 3 Then
        vDOW = "Среда"
    ElseIf vCounter = 4 Then
        vDOW = "Четверг"
    ElseIf vCounter = 5 Then
        vDOW = "Пятница"
    End If
    response = InputBox(vDOW)
        If response = "" Then Exit Sub
    vSum = CLng(response) + vSum
Next
MsgBox "За неделю было отработано " & vSum & " час (а, ов)"
End Sub
 
Sub Зарплата()
Dim response As String
Dim vSalary As Long
Do
    response = InputBox("Введите, сколько вам платят за 1 час работы")
    Exit Do
Loop
vSalary = CLng(response) * vSum
MsgBox "Зарплата за неделю составляет " & vSalary & " у.е."
End Sub
merick вне форума Ответить с цитированием
Старый 26.03.2016, 14:19   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub Зарплата()
  Dim response As String
  Dim vSalary As Long
  response = InputBox("Введите, сколько вам платят за 1 час работы")
  РабочиеЧасы
  vSalary = CLng(response) * vSum
  MsgBox "Зарплата за неделю составляет " & vSalary & " у.е."
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.03.2016, 14:24   #3
merick
Пользователь
 
Регистрация: 31.10.2015
Сообщений: 30
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Sub Зарплата()
  Dim response As String
  Dim vSalary As Long
  response = InputBox("Введите, сколько вам платят за 1 час работы")
  РабочиеЧасы
  vSalary = CLng(response) * vSum
  MsgBox "Зарплата за неделю составляет " & vSalary & " у.е."
End Sub
при любых значениях выдает зарплата составляет 0 у.е
merick вне форума Ответить с цитированием
Старый 26.03.2016, 14:48   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Public vSum As Long
Sub РабочиеЧасы()
Dim vCounter As Long
Dim response As String
Dim vDOW As String
Dim vSum As Long
vSum - обьявлена 2 раза
1-й раз как глобальная переменная
1-й раз в процедуре РабочиеЧасы, как локальная

удалите строку с вторым обьявление переменной
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.03.2016, 14:52   #5
merick
Пользователь
 
Регистрация: 31.10.2015
Сообщений: 30
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Public vSum As Long
Sub РабочиеЧасы()
Dim vCounter As Long
Dim response As String
Dim vDOW As String
Dim vSum As Long
vSum - обьявлена 2 раза
1-й раз как глобальная переменная
1-й раз в процедуре РабочиеЧасы, как локальная

удалите строку с вторым обьявление переменной
Спасибо вам!
merick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рабочие дни двух работников valerij Microsoft Office Excel 14 13.08.2015 19:39
рабочие дни в определенный месяц opoiknet Microsoft Office Excel 7 29.08.2012 19:50
Рабочие листы... MARine_life Microsoft Office Excel 6 05.11.2011 14:01