Какой добавить в visual basic код позволяющий пропускать пустые ячейки? - VB
Формулировка задачи:
Решение задачи: «Какой добавить в visual basic код позволяющий пропускать пустые ячейки?»
textual
Листинг программы
Public Sub Stipend() Dim stip1 As Boolean Dim stip2 As Boolean Dim stip3 As Boolean Dim stip4 As Boolean Dim stip5 As Boolean Dim sov As Boolean Dim YesNo As String Dim a As Integer Dim b As Integer Dim n As Integer Dim c As Integer Dim d As Integer Dim Per As Integer Dim Vtor As Integer Dim Pyat As Integer Dim Koef As Single n = 2 a = 1 Do While (Sheets(UserForm1.ComboBox1.Text).Cells(a, 1) <> "") And (Sheets(UserForm1.ComboBox1.Text).Cells(a + 1, 1) <> "") If Sheets(UserForm1.ComboBox1.Text).Cells(a, 1) = UserForm1.ComboBox2.Text Then a = a + 2 Per = a - 1 Exit Do End If a = a + 1 Loop Do While Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) <> "" Pyat = 0 Max = 0 Koef = 0 c = 0 stip1 = True stip2 = True stip3 = True stip4 = True stip5 = True For b = 3 To 19 If Sheets(UserForm1.ComboBox1.Text).Cells(Per, b) <> "" Then c = c + 1 If Sheets(UserForm1.ComboBox1.Text).Cells(a, b) < 4 Or Sheets(UserForm1.ComboBox1.Text).Cells(a, b) = "" Or Sheets(UserForm1.ComboBox1.Text).Cells(a, b) = "н/а" Or Sheets(UserForm1.ComboBox1.Text).Cells(a, b) = "н\а" Then stip1 = False End If If Sheets(UserForm1.ComboBox1.Text).Cells(a, 23) <> "" Then stip2 = False End If If Sheets(UserForm1.ComboBox1.Text).Cells(a, 24) = "к" Then stip3 = False End If If Sheets(UserForm1.ComboBox1.Text).Cells(a, b) = 5 Or Sheets(UserForm1.ComboBox1.Text).Cells(a, b) = "зач" Then Pyat = Pyat + 1 End If End If Next b '--------------------------------------------------------------- If stip1 = True Then d = 1 Do While (Sheets(UserForm1.ComboBox1.Text).Cells(d, 1) <> "") And (Sheets(UserForm1.ComboBox1.Text).Cells(d + 1, 1) <> "") If Sheets(UserForm1.ComboBox1.Text).Cells(d, 1) = UserForm1.ComboBox2.List(UserForm1.ComboBox2.ListIndex - 1) Then d = d + 2 Vtor = d - 1 sov = False Do While Sheets(UserForm1.ComboBox1.Text).Cells(d, 2) <> "" If Sheets(UserForm1.ComboBox1.Text).Cells(d, 2) = Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) Then sov = True For b = 3 To 19 If Sheets(UserForm1.ComboBox1.Text).Cells(Vtor, b) <> "" Then If Sheets(UserForm1.ComboBox1.Text).Cells(d, b) = 3 Or Sheets(UserForm1.ComboBox1.Text).Cells(d, b) = 2 Or Sheets(UserForm1.ComboBox1.Text).Cells(d, b) = "" Or Sheets(UserForm1.ComboBox1.Text).Cells(d, b) = "н/а" Or Sheets(UserForm1.ComboBox1.Text).Cells(d, b) = "н\а" Then stip4 = False End If End If Next b End If d = d + 1 Loop End If d = d + 1 Loop If stip4 = False Then stip1 = False End If If sov = False Then YesNo = MsgBox("Студент " & Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) & " не найден в предыдущем месяце." & vbCrLf & vbCrLf & "Остановить программу для проверки?", vbYesNo, "Ошибка") If YesNo = vbYes Then Application.DisplayAlerts = False ActiveWorkbook.Worksheets(UserForm1.ComboBox1.Text & "_Стипендия").Delete Application.DisplayAlerts = True Exit Sub Else End If End If If UserForm1.ComboBox2.Text = "Октябрь" Or UserForm1.ComboBox2.ListIndex > 1 Then d = 1 Do While (Sheets(UserForm1.ComboBox1.Text).Cells(d, 1) <> "") And (Sheets(UserForm1.ComboBox1.Text).Cells(d + 1, 1) <> "") If Sheets(UserForm1.ComboBox1.Text).Cells(d, 1) = UserForm1.ComboBox2.List(UserForm1.ComboBox2.ListIndex - 2) Then d = d + 2 Do While Sheets(UserForm1.ComboBox1.Text).Cells(d, 2) <> "" If Sheets(UserForm1.ComboBox1.Text).Cells(d, 2) = Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) Then For b = 3 To 19 If Sheets(UserForm1.ComboBox1.Text).Cells(d, b) <= 3 Then If UserForm1.ComboBox2.Text = "Октябрь" Then stip5 = False Else If UserForm1.ComboBox2.ListIndex > 1 Then stip1 = False End If End If End If Next b End If d = d + 1 Loop End If d = d + 1 Loop If UserForm1.ComboBox2.Text = "Октябрь" Then If stip4 = True Or stip5 = True Then stip1 = True End If End If End If End If '---------------------------------------------------------------- If c > 0 Then Koef = Pyat / c * 100 End If If (stip2 = True) And (stip3 = True) Then If ((stip1 = True) And (stip2 = True) And (stip3 = True) And (c > 0)) Or Sheets(UserForm1.ComboBox1.Text).Cells(a, 25) <> "" Then If (stip1 = True) And (stip2 = True) And (stip3 = True) And (c > 0) Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 1) = Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) If (Koef >= 75) And (Koef <= 100) Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) = 3 Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "за отличную успеваемость " End If If (Koef >= 50) And (Koef < 75) Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) = 2 Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "за хорошую успеваемость " End If If (Koef >= 25) And (Koef < 50) Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) = 1.5 Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "за хорошую успеваемость " End If If Koef < 25 Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) = 1.25 Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "за хорошую успеваемость " End If End If If Sheets(UserForm1.ComboBox1.Text).Cells(a, 25) = "Ст" Or Sheets(UserForm1.ComboBox1.Text).Cells(a, 25) = "Староста" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 1) = Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 3) = 1 If Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) <> "" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "(" + CStr(Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2)) + "), " + "за исполнение обязанностей старосты (1) " Else Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "за исполнение обязанностей старосты " End If Else If Sheets(UserForm1.ComboBox1.Text).Cells(a, 25) = "Зам" Or Sheets(UserForm1.ComboBox1.Text).Cells(a, 25) = "Заместитель" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 1) = Sheets(UserForm1.ComboBox1.Text).Cells(a, 2) Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 3) = 0.5 If Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) <> "" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "(" + CStr(Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2)) + "), " + "за исполнение обязанностей зам. старосты (0.5)" Else Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) = Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 5) + "за исполнение обязанностей зам. старосты " End If End If End If If Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) = "" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 2) = 0 End If If Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 3) = "" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 3) = 0 End If If Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 4) = "" Then Sheets(UserForm1.ComboBox1.Text & "_Стипендия").Cells(n, 4) = 0 End If n = n + 1 End If End If a = a + 1 Loop YesNo = MsgBox("Назначит доп. стипендию?", vbYesNo, "Доп. стипендия") If YesNo = vbYes Then UserForm2.Show End If End Sub Sub Кнопка6_Щелчок() UserForm1.Show End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д