0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 53
1

Ошибка "Run-time error 13" при расчете

15.03.2019, 09:45. Показов 5297. Ответов 8
Метки нет (Все метки)

Здравствуйте.
Очень надеюсь на вашу помощь!

Есть задача: рассчитать налог для каждого работника (Налог = процент * зарплата). Процент налога зависит от размера зарплаты. Так, если зарплата сотрудника до 100000, то налог = 9%; 12% - от 100000 до 200000; 15% - более 200000

Уже подготовил таблицу (прикрепил скрин) и написал код к программе:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub РасчетНалога()
Dim Зарплата As Range
Dim Налог As Double
 
Set Зарплата = Range("C2:C6")
 
If Зарплата > 100000 Then 'ошибка при запуске
Налог = (Зарплата * I2) / 100
ElseIf Зарплата >= 100000 Or Зарплата < 200000 Then
Налог = (Зарплата * I3) / 100
ElseIf Зарплата >= 200000 Then
Налог = (Зарплата * I3) / 100
End If
 
Range("D2:D6").Value = Налог
End Sub
Однако при попытке запуска выдает ошибку "Run-time error 13 Type mismatch" (где именно, помечено комментарием)

Вопрос: Как можно избавиться от данной ошибки?
Миниатюры
Ошибка "Run-time error 13" при расчете  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2019, 09:45
Ответы с готовыми решениями:

Ошибка в VBA Run-time error '9' Subscrpt out of range
Этот код даёт ошибку в строке 7. Подскажите, пожалуйста, как можно её исправить? Спасибо. For...

Ошибка при запуске программы "run time error 13 type mismatch"
сама задача: Определить количество элементов массива, принадлежащих промежутку отa до b (значения...

При попытке запуска user form"" через double click выплывает ошибка run error time 9
Всем привет при запуске user form-&quot;UPDATE_TRAINING&quot; через двойной клик в умной таблице:...

Ошибка "Run-time error "9": Subscript out of range"
Доброго времени суток. Программа выводит ошибку &quot;Run-time error &quot;9&quot;: Subscript out of range&quot;, но не...

8
3493 / 2141 / 716
Регистрация: 02.11.2012
Сообщений: 5,623
15.03.2019, 10:01 2
обязательно макросом? формулой нельзя?
0
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 53
15.03.2019, 10:05  [ТС] 3
Цитата Сообщение от Vlad999 Посмотреть сообщение
обязательно макросом? формулой нельзя?
Да, нужно сделать всё именно макросом.
0
3493 / 2141 / 716
Регистрация: 02.11.2012
Сообщений: 5,623
15.03.2019, 10:11 4
как то так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub РасчетНалога()
Dim cl As Range
Dim k As Double
 
For each cl in Range("C2:C6")
 
   If cl < 100000 Then
       k = [I2] ' k = 9
   ElseIf cl < 200000 Then
             k = [I3] ' k = 12
         Else
             k = [I4] ' k = 15
    End If
cl.offset(0,1) = (cl * k) / 100 
next
End Sub
2
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 53
15.03.2019, 11:05  [ТС] 5
Цитата Сообщение от Vlad999 Посмотреть сообщение
как то так
Отредактировал код под себя по Вашему предложению. Вышло следующее:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub РасчетНалога()
Dim Зарплата As Range
Dim Налог As Double
 
For Each Зарплата In Range("C2:C6")
    If Зарплата > 100000 Then
        Налог = [I2]
    ElseIf Зарплата >= 100000 Or Зарплата < 200000 Then
        Налог = [I3]
    ElseIf Зарплата >= 200000 Then
        Налог = [I4]
    End If
Зарплата.Offset(0, 1) = (Зарплата * Налог) / 100
Next
End Sub
Однако почему-то выдает не совсем такие результаты при расчете (прикрепил скрин)...
Даже если взять для примера налог для ячейки C2, то должен выйти результат 2250 ((25000 * 9) / 100).


Сама формула правильная, не могу понять даже в чем причина неверного расчета
Миниатюры
Ошибка "Run-time error 13" при расчете  
0
3493 / 2141 / 716
Регистрация: 02.11.2012
Сообщений: 5,623
15.03.2019, 11:19 6
Цитата Сообщение от Steris Посмотреть сообщение
(прикрепил скрин)
файл цеплять нужно.
0
3997 / 1393 / 383
Регистрация: 07.08.2013
Сообщений: 3,494
15.03.2019, 11:20 7
вероятнее всего в столбце I реальное число не 9 а 0,09 т.е. в 100 раз меньше
т.к. в ячейке указан % и видимо формат ячейки указан процентный
2
3493 / 2141 / 716
Регистрация: 02.11.2012
Сообщений: 5,623
15.03.2019, 11:23 8
поменяйте очередность проверок (у меня другая проверка, не заметили?)
1. >200000
2. >100000
3. >1
т.к. в вашем коде 250000 будет давать ИСТИНа при первой проверке.
1
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 53
15.03.2019, 11:41  [ТС] 9
Всем большое спасибо!
Помогло: в столбце I изменил формат с процентного на числовой и поменял всё же очередность проверок.
0
15.03.2019, 11:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2019, 11:41

Ошибка "run-time error '424' object required"
в следующем коде в строке 4 (открытие файла с расширением doc) выскакивает ошибка &quot;run-time error...

Ошибка: "Run-time error '9': Subscript out of range"
Здравствуйте! При многократном нажатии на кнопку вылазит данная ошибка &quot;Run-time error '9':...

Выходит ошибка run time error "5152"
Есть документ word c макросом (vba), для написания ответов по работе. После добавления кому, куда,...

Ошибка Run-time error "50290"
Доброго времени суток! Использую таймер запуска макроса через API. Проблем с запуском нет, есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru