В настоящее время я работаю над проектом библиотечной системы, использующей Excel VBA, и мне нужен модуль, который проверяет просроченные книги, а также рассчитывает штрафы, наложенные на пользователя, у которого просроченная книга.
Это код, который у меня есть, и он, очевидно, не работает.
Dim fine, count, count2 As Integer
Dim currentdate, borroweddate, difference As String
'this is the amount of fine imposed per day (50 cents)
fine = 1 / 2
'gets number of borrowing records
count = Sheets("borrowing records").Range("K1").Value
'count2 is just a counter for the cells
count2 = 2
'gets the current date
currentdate = Now()
While (count2 < count + 2)
If (Sheets("borrowing records").Cells(count2, 8).Value = "ON LOAN") Then
difference = currentdate - Sheets("borrowing records").Cells(count2, 4).Value
If (difference > 20) Then
'prints the overdue record
Sheets("display").Cells(count2, 1).Value = Sheets("borrowing records").Cells(count2, 1).Value
Sheets("display").Cells(count2, 2).Value = Sheets("borrowing records").Cells(count2, 2).Value
Sheets("display").Cells(count2, 3).Value = Sheets("borrowing records").Cells(count2, 3).Value
Sheets("display").Cells(count2, 4).Value = Sheets("borrowing records").Cells(count2, 4).Value
Sheets("display").Cells(count2, 5).Value = difference * fine
End If
Else
count2 = count2 + 1
End If
Wend
Sheets("display").Select
Когда я попытался запустить подобный код для проверки значения разности, я получил случайные числа с очень длинными десятичными знаками.Я не знаю почему.Результаты, которые я получил, даже не приблизились к реальной разнице в днях.Например, если я проверю разницу в днях между 20 марта и 1 марта, я получу что-то вроде 4.35648920486E32E, и да, в результате всегда будет буква "E".
Мое первоначальное намерениебыл для кодирования для поиска по листу («записи заимствования»), где программа хранит записи книг, взятых в долг.
Программа будет сравнивать дату заимствования книги и текущую дату, чтобыПосмотрите, увеличен ли лимит в 20 дней.
Если это так, он рассчитает штраф, умножив разницу в дате на сумму штрафа в день (в данном случае его 50 центов).Затем программа должна распечатать просроченные записи, а также наложенный штраф, на другом листе («дисплей»).
Я знаю, что программа не будет работать, возможно, из-за формата даты иличто-то в этом роде.Однако я понятия не имею, как это решить.
Мой проект должен быть в понедельник, и я просто надеюсь, что кто-то, читающий это, поможет мне в этом.Спасибо!