Пропущенный вопрос перенести в конец теста - VB
Формулировка задачи:
Я занимаюсь проектом по созданию тестирующей программы, состоящей из 14 вопросов т.е. 14 форм, и у меня вопрос, я хочу ввести кнопку на каждой форме " пропустить вопрос" и мне бы хотелось чтобы при нажатии этой кнопки пропущенный вопрос переходил в конец теста, я думал над созданием массива форм, но как реализовать это - не знаю, если у кого есть мысли, поделитесь, пожалуйста, заранее спасибо
Решение задачи: «Пропущенный вопрос перенести в конец теста»
textual
Листинг программы
Option Explicit
Const r = 90
Dim WithEvents Lb As Label
Dim WithEvents cb1 As CommandButton, WithEvents cb2 As CommandButton, WithEvents cb3 As CommandButton
Dim i&, ii&, nn&, a$(), aa$()
Private Sub cb3_Click()
'Новый массив с вопросами (Сброс)
aa = Split("1 2 3 4 5 6 7 8 9 10")
ii = 0: nn = 0 'Сброс индекса ответа и счетчика ответов
Lb.Caption = "Вопрос " & aa(ii)
End Sub
Private Sub cb2_Click()
'Перемещение неотвеченного вопроса в конец массива (пропуск)
Dim s$, n&
a = aa
For i = 0 To UBound(aa)
If i <> ii Then
a(n) = aa(i): n = n + 1
End If
Next
a(n) = aa(ii)
aa = a: nn = 0 'Сброс счётчика ответов
Lb.Caption = "Вопрос " & aa(ii)
End Sub
Private Sub cb1_Click()
'Режим ответов
If MsgBox("Это был правильный ответ ?", 68) = vbNo Then
cb2_Click
Exit Sub
End If
ii = (ii + 1) Mod 10
nn = nn + 1
If nn = 10 Then
MsgBox "Поздравляю, вы ответили на все вопросы", 64
End 'конец программы
End If
Lb.Caption = "Вопрос " & aa(ii)
End Sub
Private Sub Form_Load()
Set Lb = Controls.Add("vb.Label", "Lb"): With Lb
.Move r, r
.Visible = 1
End With
Set cb1 = Controls.Add("vb.CommandButton", "cb1"): With cb1
.Move r, Lb.Height + r
.Caption = "Ответить"
.Visible = 1
End With
Set cb2 = Controls.Add("vb.CommandButton", "cb2"): With cb2
.Move r * 2 + cb1.Width, Lb.Height + r
.Caption = "Пропустить"
.Visible = 1
End With
Set cb3 = Controls.Add("vb.CommandButton", "cb3"): With cb3
.Move r * 2 + cb1.Width * 2, Lb.Height + r
.Caption = "Сброс"
.Visible = 1
End With
cb3_Click
End Sub