Литература
1. Беляев С.П. Курс лекций по «Исследованию операций».
2. Кузменко В.Г, Программирование на Microsoft Visual Basic for Applications 2003 /Москва изд. Бином; 2004г. – 880 с.: ил.
Листинг программы
Форма About (справка о программе)
Private Sub UserForm_Terminate()
Hide
InsForm.Show
End Sub
Форма HelpForm1 (помощь в заполнении таблицы)
Private Sub CommandButton1_Click()
OKForm.StartUpPosition = 0
OKForm.Top = 450
OKForm.Left = 580
OKForm.Show
Private Sub CommandButton2_Click()
Форма HelpForm2 (помощь в понимании результатов вычислений)
check = True
SolForm.StartUpPosition = 0
SolForm.Top = 350
SolForm.Left = 480
SolForm.Show
check = False
Форма HelpForm3 (помощь в переводе единиц времени)
Форма InsForm (ввод количества этапов работ, проверка формата листа, проверка правильности ввода, вызов справки, выход из программы, переход к расчётной форме)
'Проверка правильности ввода
Dim Answer As String
Application.ScreenUpdating = False
If iget.Value = "" Then
MsgBox "Введите количество этапов", vbCritical + vbOKOnly, "Ошибка ввода"
Exit Sub
End If
If Not (IsNumeric(iget.Value)) Then
MsgBox "Количество этапов работы должно быть числом", vbCritical + vbOKOnly, "Ошибка ввода"
If iget.Value < 3 Then
MsgBox "Количество этапов работы должно быть не менее 3", vbCritical + vbOKOnly, "Ошибка ввода"
If iget.Value > 254 Then
MsgBox "Количество этапов работы должно быть не более 222", vbCritical + vbOKOnly, "Ошибка ввода"
n = Fix(iget.Value)
'Проверка листа на наличие информации
For i = 1 To 254
For j = 1 To 254
If Not ActiveSheet.Cells(i, j).Value = "" Then
Answer = MsgBox("Лист содержит информацию! При продолжении она будет уничтожена! Продолжить?", vbCritical + vbOKCancel, "Предупреждение")
If Answer = vbCancel Then
i = 254
j = 254
If Answer = vbOK Then
Next j
Next i
'Построение таблицы ввода и переход к ней
Range("A1:IV254").Select
Selection.Clear
InsData
Application.ScreenUpdating = True
If help.Value = True Then
hlp = True
HelpForm1.Show
Else
hlp = False
STF.Show
Private Sub CommandButton3_Click()
About.Show
Public Sub Start()
iget.Value = n
Private Sub CommandButton4_Click()
Dim flag As Boolean
flag = True
n = 1
If Not ActiveSheet.Cells(1, 1).Value = "№" Then
MsgBox "Лист не отформатирован для расчёта, воспользуйтесь окном ввода данных", vbCritical + vbOKOnly, "Ошибка"
Do While flag
n = n + 1
If ActiveSheet.Cells(n, 1).Value = "" Then
flag = False
If ActiveSheet.Cells(n, 1).Value = n - 1 Then
Else: flag = False
Loop
n = n - 2
For i = 2 To n
If Not ActiveSheet.Cells(1, i).Value = i - 1 Then
Private Sub SpinButton1_SpinUp()
If iget.Value <= 222 Then
iget.Value = iget.Value + 1
Private Sub SpinButton1_SpinDown()
If iget.Value >= 4 Then
iget.Value = iget.Value - 1
Private Sub UserForm_Initialize()
iget.Value = 10
Sheets("Data").Select
Форма OKForm (подтверждение окончания ввода начальных данных)
Форма Perevod1 (запоминание текущих единиц времени)
'Запоминание текущих единиц времени
If Minutes.Value = True Then
edin = 1
If Chas.Value = True Then
edin = 2
If Sutki.Value = True Then
edin = 3
If Nedeli.Value = True Then
edin = 4
If Mes.Value = True Then
edin = 5
If Godi.Value = True Then
edin = 6
Perevod2.Show
Форма Perevod2 (перевод единиц времени, возврат к расчётной форме)
'Перевод единиц времени
If ActiveSheet.Cells(1, 1).Value = "№" Then
If edin = 1 Then
For i = 2 To n + 1
For j = 2 To n + 1
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 60
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 1440
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 10080
MsgBox "Точный перевод невозможен. Попробуйте другой вариант", vbCritical + vbOKOnly, "Ошибка ввода"
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 525600
If edin = 2 Then
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value * 60
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 24
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 168
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 8760
If edin = 3 Then
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value * 1440
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value * 24
ActiveSheet.Cells(i, j).Value = ActiveSheet.Cells(i, j).Value / 7
Страницы: 1, 2, 3, 4, 5