Dim Дата_выдачи As Integer, Дата_возврата As Integer
Private Sub UserForm_Initialize()
If Cells(1, 1) = Empty Then Zagolovok
With Выбор_Факультета_txt
.List = Array("Морской", "Технологический")
.ListIndex = 0
End With
With Выбор_Группы_txt
.List = Array("ТР-1", "ТР-2", "ТР-3", "ТР-4", "ТР-5")
.ListIndex = 0
End With
With Счётчик_дата_выдачи
.Max = 31
.Min = 1
.Value = 1
End With
Дата_выдачи = 1
Дата_выдачи_txt.Text = Дата_выдачи
With Счётчик_дата_возврата
.Max = 31
.Min = 1
.Value = 1
End With
Дата_возврата = 1
Дата_возврата_txt.Text = Дата_возврата
End Sub
Sub Zagolovok()
Worksheets.Select (1)
With Cells(1, 1)
.Value = "Выдача литературы"
.Font.Size = 14
.Font.Bold = True
End With
Cells(2, 1).Value = "Фамилия И.О."
Cells(2, 2).Value = "Факультет"
Cells(2, 3).Value = "Группа"
Cells(2, 4).Value = "Дата выдачи"
Cells(2, 5).Value = "Дата возврата"
Cells(2, 6).Value = "Категория литературы"
Range("A1:F1").Merge
Range("A1:F2").HorizontalAlignment = xlCenter
Columns("A:F").AutoFit
Range("A2:F2").Borders.LineStyle = xlDouble
Worksheets.Select (2)
With Cells(1, 8)
.Value = "Категория литературы"
.Font.Size = 12
.Font.Bold = True
With Cells(1, 9)
.Value = "Кол-во"
.Font.Size = 12
.Font.Bold = True
End With
End With
Cells(2, 8).Value = "Научная"
Cells(3, 8).Value = "Художественная"
Cells(4, 8).Value = "Периодическая"
Range("H2:I2").Borders.LineStyle = xlDouble
Range("H3:I3").Borders.LineStyle = xlDouble
Range("H4:I4").Borders.LineStyle = xlDouble
Columns("H:I").AutoFit
End Sub
Private Sub ОК_Click()
Dim Ввод_Фамилии As String, Выбор_Факультета As String, Выбор_Группы As String, Категория_литературы As String, Дата_выдачи As String, Дата_возврата As String, i As Integer, k1 As Integer, k2 As Integer, k3 As Integer
i = 3
k1 = 0
k2 = 0
k3 = 0
Do While Cells(i, 1) <> ""
If Cells(i, 6).Value = "Научная" = True Then
k1 = k1 + 1
End If
If Cells(i, 6).Value = "Художественная" = True Then
k2 = k2 + 1
End If
If Cells(i, 6).Value = "Периодическая" = True Then
k3 = k3 + 1
End If
i = i + 1
Loop
Ввод_Фамилии = Ввод_Фамилии_txt.Text
Выбор_Факультета = Выбор_Факультета_txt.Text
Выбор_Группы = Выбор_Группы_txt.Text
If Научная.Value = True Then
Категория_литературы = "Научная"
End If
If Художественная.Value = True Then
Категория_литературы = "Художественная"
End If
If Периодическая.Value = True Then
Категория_литературы = "Периодическая"
End If
With ActiveSheet
.Cells(2, 9).Value = k1
.Cells(3, 9).Value = k2
.Cells(4, 9).Value = k3
.Cells(i, 1).Value = Ввод_Фамилии
.Cells(i, 2).Value = Выбор_Факультета
.Cells(i, 3).Value = Выбор_Группы
.Cells(i, 4).Value = Дата_выдачи_txt
.Cells(i, 5).Value = Дата_возврата_txt
.Cells(i, 6).Value = Категория_литературы
End With
Columns("A:F").AutoFit
Range(Cells(i, 1), Cells(i, 6)).Borders.LineStyle = xlDouble
End Sub
Private Sub Отмена_Click()
End
End Sub
Private Sub Счётчик_дата_выдачи_Change()
Дата_выдачи = Счётчик_дата_выдачи.Value
Дата_выдачи_txt = Дата_выдачи
End Sub
Private Sub Счётчик_дата_возврата_Change()
Дата_возврата = Счётчик_дата_возврата.Value
Дата_возврата_txt = Дата_возврата
End Sub
Тут 2 таблицы, в 1 всё заполняется, а в другой считает кол-во выданной литературы (научной, периодической и художественной). Ошибка в том что она не считает первую строку заполнения, а начинает считать со второй.
В вашей функции Private Sub Ok_Click()
сначала просчитывается количество выданных книг, а затем только заполняется последняя строчка выданной книги. Поэтому получается, что не хватает в подсчете одной книги. Т. е. не считается последняя строчка.
Код переделаю сейчас.
Процедура Private Sub Ok_Click() должна выглядеть так:
Dim Ввод_Фамилии As String, Выбор_Факультета As String, Выбор_Группы As String, Категория_литературы As String, Дата_выдачи As String, Дата_возврата As String, i As Integer, k1 As Integer, k2 As Integer, k3 As Integer
i = 3
Do While Cells(i, 1) <> ""
i = i + 1
Loop
Ввод_Фамилии = Ввод_Фамилии_txt.Text
Выбор_Факультета = Выбор_Факультета_txt.Text
Выбор_Группы = Выбор_Группы_txt.Text
If Научная.Value = True Then
Категория_литературы = "Научная"
End If
If Художественная.Value = True Then
Категория_литературы = "Художественная"
End If
If Периодическая.Value = True Then
Категория_литературы = "Периодическая"
End If
With ActiveSheet
.Cells(i, 1).Value = Ввод_Фамилии
.Cells(i, 2).Value = Выбор_Факультета
.Cells(i, 3).Value = Выбор_Группы
.Cells(i, 4).Value = Дата_выдачи_txt
.Cells(i, 5).Value = Дата_возврата_txt
.Cells(i, 6).Value = Категория_литературы
End With
Columns("A:F".AutoFit
Range(Cells(i, 1), Cells(i, 6)).Borders.LineStyle = xlDouble
i = 3
k1 = 0
k2 = 0
k3 = 0
Do While Cells(i, 1) <> ""
If Cells(i, 6).Value = "Научная" = True Then
k1 = k1 + 1
End If
If Cells(i, 6).Value = "Художественная" = True Then
k2 = k2 + 1
End If
If Cells(i, 6).Value = "Периодическая" = True Then
k3 = k3 + 1
End If
i = i + 1
Loop
With ActiveSheet
.Cells(2, 9).Value = k1
.Cells(3, 9).Value = k2
.Cells(4, 9).Value = k3
End With