Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Office Excel
Войти
Регистрация
Восстановить пароль
 
Steris
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 32
1

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

15.03.2019, 09:45. Просмотров 102. Ответов 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" (где именно, помечено комментарием)

Вопрос: Как можно избавиться от данной ошибки?
0
Миниатюры
Ошибка "Run-time error 13" при расчете  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2019, 09:45
Ответы с готовыми решениями:

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

run time error 9
при попытке сгенерировать ans-файл, выдает следующую ошибку...как исправить?

Run-time error '13': Type mismatch
Ребята, добрый вечер. Помогите разобраться с ошибкой. Скинул другому человеку, у него работает, у...

Run time error 438 object doesn't support
Ребят помогите пож было всё нормально с файлом, теперь ругается этой ошибкой код просто на...

Требуется чтобы в "Таблице" при заполнении столбца "тип картриджа" столбец "аппарат" заполнялся автоматически
Доброго времени суток! Есть таблица по учету картриджей и техники. Требуется чтобы в &quot;Таблице&quot; при...

8
Vlad999
2983 / 1822 / 559
Регистрация: 02.11.2012
Сообщений: 4,594
15.03.2019, 10:01 2
обязательно макросом? формулой нельзя?
0
Steris
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 32
15.03.2019, 10:05  [ТС] 3
Цитата Сообщение от Vlad999 Посмотреть сообщение
обязательно макросом? формулой нельзя?
Да, нужно сделать всё именно макросом.
0
Vlad999
2983 / 1822 / 559
Регистрация: 02.11.2012
Сообщений: 4,594
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
Steris
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 32
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).


Сама формула правильная, не могу понять даже в чем причина неверного расчета
0
Миниатюры
Ошибка "Run-time error 13" при расчете  
Vlad999
2983 / 1822 / 559
Регистрация: 02.11.2012
Сообщений: 4,594
15.03.2019, 11:19 6
Цитата Сообщение от Steris Посмотреть сообщение
(прикрепил скрин)
файл цеплять нужно.
0
snipe
3105 / 1083 / 261
Регистрация: 07.08.2013
Сообщений: 2,755
15.03.2019, 11:20 7
вероятнее всего в столбце I реальное число не 9 а 0,09 т.е. в 100 раз меньше
т.к. в ячейке указан % и видимо формат ячейки указан процентный
2
Vlad999
2983 / 1822 / 559
Регистрация: 02.11.2012
Сообщений: 4,594
15.03.2019, 11:23 8
поменяйте очередность проверок (у меня другая проверка, не заметили?)
1. >200000
2. >100000
3. >1
т.к. в вашем коде 250000 будет давать ИСТИНа при первой проверке.
1
Steris
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 32
15.03.2019, 11:41  [ТС] 9
Всем большое спасибо!
Помогло: в столбце I изменил формат с процентного на числовой и поменял всё же очередность проверок.
0
15.03.2019, 11:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2019, 11:41

Ошибка при использовании опции "линия тренда"
На графике Excel-я воспользовался для аппроксимации функции линией тренда. Линия тренда (полином...

Ошибка макроса при "общем доступе" к книге
Всем привет. помогите решить проблему, есть макрос который при заполненной ячейке закрашивает...

При использовании "Transpose" возникает ошибка
Имеется вот такой код: Option Explicit Sub Dw() Dim di As Object, i&amp;, j&amp;, x Dim lCol As...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru