Знакомый чел попросил написать программу, которая выдает на экран форму, содержащую вопрос и три поля. Я ленивый черт и написал простейшую фигню в экселе. Потом было три доработки, но опять же все корявенько и страшненько - выкидывать уже написанное было страшно лень )))
Буду ждать комментариев ))))
Программа - вопросник для охранников (VBA в Excel)
Сообщений 1 страница 4 из 4
Поделиться12008-04-02 23:48:10
Поделиться22008-04-02 23:52:26
Экспортированная форма
VERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} UserForm1 Caption = "Вопросник" ClientHeight = 5280 ClientLeft = 45 ClientTop = 330 ClientWidth = 10080 OleObjectBlob = "UserForm1.frx":0000 StartUpPosition = 1 'CenterOwner End Attribute VB_Name = "UserForm1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Dim data_(200, 60) Dim Odd(40, 4) Dim i(10) Dim m Dim x Dim lb Private Sub CommandButton1_Click() tmp = Worksheets("Вопросики").Cells(i(m) + 1, 3) If Worksheets("Вопросики").Cells(i(m) + 1, 3) = "Да" Then i(m) = -1 Else lb = lb + 1 Odd(4 * (lb - 1) + 0, 2) = Mid(Worksheets("Вопросики").Cells(i(m) + 1, 2), 1, 100) Odd(4 * (lb - 1) + 1, 2) = Mid(Worksheets("Вопросики").Cells(i(m) + 1, 2), 101, 100) Odd(4 * (lb - 1) + 2, 2) = Mid(Worksheets("Вопросики").Cells(i(m) + 1, 2), 201, 100) ' UserForm2.ListBox1.List(ib, 0) = Worksheets("Вопросики").Cells(i(m) + 1, 2) Odd(4 * (lb - 1) + 0, 0) = m Odd(4 * (lb - 1) + 0, 1) = i(m) Odd(4 * (lb - 1) + 0, 3) = Worksheets("Вопросики").Cells(i(m) + 1, 3) i(m) = 0 End If m = m + 1 x = Вопросы() End Sub Private Sub CommandButton2_Click() tmp = Worksheets("Вопросики").Cells(i(m) + 1, 3) If Worksheets("Вопросики").Cells(i(m) + 1, 3) = "Нет" Then i(m) = -1 Else lb = lb + 1 Odd(4 * (lb - 1) + 0, 2) = Mid(Worksheets("Вопросики").Cells(i(m) + 1, 2), 1, 100) Odd(4 * (lb - 1) + 1, 2) = Mid(Worksheets("Вопросики").Cells(i(m) + 1, 2), 101, 100) Odd(4 * (lb - 1) + 2, 2) = Mid(Worksheets("Вопросики").Cells(i(m) + 1, 2), 201, 100) ' UserForm2.ListBox1.List(ib, 0) = Worksheets("Вопросики").Cells(i(m) + 1, 2) Odd(4 * (lb - 1) + 0, 0) = m Odd(4 * (lb - 1) + 0, 1) = i(m) Odd(4 * (lb - 1) + 0, 3) = Worksheets("Вопросики").Cells(i(m) + 1, 3) i(m) = 0 End If m = m + 1 x = Вопросы() End Sub Function Вопросы() 3: If m = 11 Or m = 0 Then y = (i(1) + i(2) + i(3) + i(4) + i(5) + i(6) + i(7) + i(8) + i(9) + i(10)) * -1 If m = 11 Then For z = 1 To 10 If i(z) > 0 Then m = z GoTo 4 End If Next z x = MsgBox("Правильных - " & y, vbOKOnly) UserForm2.ListBox1.List() = Odd UserForm2.Show End If m = 1 lb = 0 i(1) = FormatNumber(Rnd * (367 - 1) + 1, 0) Odd(0, 2) = "" Odd(1, 2) = "" Odd(2, 2) = "" Odd(0, 0) = "" Odd(0, 1) = "" Odd(0, 3) = "" j = 2 start: i(j) = FormatNumber(Rnd(1) * (367 - 1) + 1, 0) For k = 1 To j - 1 If i(j) = i(k) Then GoTo start Next k Odd(4 * (j - 1) + 0, 2) = "" Odd(4 * (j - 1) + 1, 2) = "" Odd(4 * (j - 1) + 2, 2) = "" Odd(4 * (j - 1) + 0, 0) = "" Odd(4 * (j - 1) + 0, 1) = "" Odd(4 * (j - 1) + 0, 3) = "" j = j + 1 If j = 11 Then Else GoTo start End If For z = m To 10 If i(z) > 0 Then m = z GoTo 4 End If Next z m = 11 GoTo 3 4: UserForm1.TextBox1.Value = Worksheets("Вопросики").Cells(i(m) + 1, 2) UserForm1.Label1.Caption = "Вопрос " & m & " из 10 (№ " & i(m) & ")" End Function Private Sub CommandButton3_Click() m = m + 1 x = Вопросы() End Sub Private Sub UserForm_Initialize() m = 0 x = Вопросы() End Sub
Поделиться32008-04-03 00:00:58
Краткое содержание файла экселя - на первой странице кнопка, с кодом
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Внизу приписка - "Если будет ругаться на макросы, то или разрешить,
или Сервис-Параметры-Безопасность-Безопасность макросов-Низкая"
Вторая страница называется "вопросики", на ней в виде таблицы
№ / Вопрос /ответ
1 / Оружие - это устройства и предметы, конструктивно предназначенные для поражения живой или иной цели, подачи сигналов / Да
Всего 367 пунктов.
Поделиться42008-04-13 17:14:40
Забыл упомянуть - это самый галимый код, который я писал в своей жизни, экспериментируя с формами )))