Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Помогите найти ошибку Добавлено: 24.12.11 18:24  

Автор вопроса:  Jo
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 всё заполняется, а в другой считает кол-во выданной литературы (научной, периодической и художественной). Ошибка в том что она не считает первую строку заполнения, а начинает считать со второй.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 mic



Вопросов: 0
Ответов: 7
 Web-сайт: mickonsul.narod.ru
 Профиль | | #1
Добавлено: 24.12.11 21:49
Пожалуста, сообщите, что такое
Выбор_Факультета_txt,
Счётчик_дата_выдачи,
Дата_выдачи_txt ?
Это текстовые поля?, Или списки ListBox, ComboBox?

Ответить

Номер ответа: 2
Автор ответа:
 Jo



Вопросов: 1
Ответов: 3
 Профиль | | #2 Добавлено: 24.12.11 22:15
Выбор_Факультета_txt ComboBox
Счётчик_дата_выдачи ScrollBar
Дата_выдачи_txt TextBox

Ответить

Номер ответа: 3
Автор ответа:
 mic



Вопросов: 0
Ответов: 7
 Web-сайт: mickonsul.narod.ru
 Профиль | | #3
Добавлено: 24.12.11 22:29
Осталось узнать что такое
Научная
Художественная
Периодическая
CheckBox, OptionButton?

Ответить

Номер ответа: 4
Автор ответа:
 Jo



Вопросов: 1
Ответов: 3
 Профиль | | #4 Добавлено: 24.12.11 22:31
OptionButton

Ответить

Номер ответа: 5
Автор ответа:
 mic



Вопросов: 0
Ответов: 7
 Web-сайт: mickonsul.narod.ru
 Профиль | | #5
Добавлено: 24.12.11 23:17
В вашей функции Private Sub Ok_Click()
сначала просчитывается количество выданных книг, а затем только заполняется последняя строчка выданной книги. Поэтому получается, что не хватает в подсчете одной книги. Т. е. не считается последняя строчка.
Код переделаю сейчас.

Ответить

Номер ответа: 6
Автор ответа:
 mic



Вопросов: 0
Ответов: 7
 Web-сайт: mickonsul.narod.ru
 Профиль | | #6
Добавлено: 24.12.11 23:35
Процедура 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

Ответить

Номер ответа: 7
Автор ответа:
 Jo



Вопросов: 1
Ответов: 3
 Профиль | | #7 Добавлено: 24.12.11 23:44
Огромное тебе спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам