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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2015, 13:32   #1
andreysuperman42
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 43
Восклицание Некорректное округление остатков товара

Добрый день.
Не могу разобраться с десятичными остатками при списании товара со склада. Когда остатки без десятичных дробей, тогда все работает нормально.
Расскажу алгоритм работы:
Запускаем форму, при двойном нажатии мышью товар последовательно вставляется в ListBox2. При нажатии кнопки Списать, товар из ListBox2 списывается на листе EXCEL, но не округляет до сотых.
Вложения
Тип файла: rar Списание товара со склада(1).rar (18.5 Кб, 17 просмотров)
andreysuperman42 вне форума Ответить с цитированием
Старый 25.10.2015, 14:26   #2
gling
Форумчанин
 
Регистрация: 23.01.2010
Сообщений: 261
По умолчанию

Здравствуйте. Я бы изменил строку
Код:
 Sheets(1).Cells((Arr(i, 0)) + 1, 3) = Format(Sheets(1).Cells((Arr(i, 0)) + 1, 3) - Sheets(1).Cells((Arr(i, 0)) + 1, 4), "0.00") * 1 ' Высчитываем остаток товара
Попробуйте.
gling вне форума Ответить с цитированием
Старый 25.10.2015, 14:35   #3
andreysuperman42
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 43
По умолчанию

Да, все получилось.
Функцию Format я пробовал подставлять, но так чтобы в конце умножить на 1 не догадался.
Спасибо, gling.
andreysuperman42 вне форума Ответить с цитированием
Старый 25.10.2015, 15:27   #4
andreysuperman42
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 43
По умолчанию

Сделал немного проще, без копирования значений в ячейки на листе.

Код:
Private Sub CommandButton2_Click()
    Dim Arr    ' массив в ListBox2

    Arr = Me.ListBox2.List    ' назначаем массив из ListBox2
    On Error Resume Next    ' При ошибке в строке переходим на следующую строку
    For i = 0 To UBound(Arr)    ' Цикл для отобранного товара в ListBox2,,,
        If Err.Number <> 0 Then Exit Sub    ' Если ListBox2 не заполнен, ничего не происходит (вызывается ошибка 13)
        Sheets(1).Cells((Arr(i, 0)) + 1, 3) = Format(Sheets(1).Cells((Arr(i, 0)) + 1, 3) - Val(Arr(i, 3)), "0.00") * 1 ' Высчитываем остаток товара
    Next i
    Unload Me    ' Закрываем форму
End Sub
Но за подсказку все равно спасибо
andreysuperman42 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение остатков Chuikov Microsoft Office Excel 9 31.01.2015 21:51
задача pascal. Ввести N чисел и число K. Проверить, что сумма остатков от деления нечетных Х на К, больше суммы остатков деления.. N.i.k.o.l.a.y. Помощь студентам 4 17.11.2014 14:59
Счет остатков! Stable Microsoft Office Access 3 25.12.2012 22:07
Счет остатков! creshik SQL, базы данных 0 20.12.2012 17:40
Формирование остатков RUBEY Microsoft Office Excel 2 24.01.2008 19:32