Расчет значений функции от начального значения до конечного - VB
Формулировка задачи:
Всем доброго времени суток. Прошу Вашей помощи с таким заданием.
Создать диалоговое окно с тремя полями ввода:
Начальное значение
,Конечное значение
,Шаг
. Помимо этого необходимСчетчик
и две кнопки:ОК
иРабочий лист
. При нажатии кнопкиОК
происходит расчет значений функции от начального значения до конечного. Результат выводится в диалоговое окно. При нажатии кнопкиРабочий лист
результат выводится на рабочий лист. Номер листа устанавливается счетчиком. При разработке программы предусмотреть проверку согласованности начального и конечного значений. Функция может быть абсолютно любая с тремя переменными. Заранее спасибо.Решение задачи: «Расчет значений функции от начального значения до конечного»
textual
Листинг программы
- Option Explicit
- Dim WithEvents c1 As CommandButton
- Dim WithEvents c2 As CommandButton
- Dim WithEvents c3 As CommandButton
- Sub RePaint(Optional ByVal Frame As Object): Const ii = 9, ll = 45: Static i&, v, w, d As Object, j(ii) As Object: Do While j(ii) Is Nothing: Set j(ii) = Controls.Add("vb.label", "label_autosize"): j(ii).AutoSize = 1: Exit Do: Loop: Do While d Is Nothing: Set d = CreateObject("scripting.dictionary"): d.CompareMode = 1: Exit Do: Loop: Do Until Frame Is Nothing: Set v = Frame: On Error GoTo g5: GoTo g1: Exit Do: Loop: For Each v In Controls
- g1: Do While TypeName(v) = "Frame": On d(v.hWnd) GoTo g2, g4: d(v.hWnd) = 1: Set j(0) = Controls.Add("vb.picturebox", "pic" & v.hWnd & 0, v): j(0).Visible = 1: j(0).BorderStyle = 0: For i = 1 To ii - 1: Do While i < 5: Set j(i) = Controls.Add("vb.picturebox", "pic" & v.hWnd & i, j(0)): j(i).Visible = 1: j(i).BorderStyle = 0: Exit Do: Loop: Do While i >= 5: Set j(i) = Controls.Add("vb.frame", "fra" & v.hWnd & i, j(i - 4)): j(i).Visible = 1: d(j(i).hWnd) = 2: Exit Do: Loop: Next: For Each w In Controls: Do While w.Container.hWnd = v.hWnd And w.Name <> j(0).Name: Set w.Container = j(0): Exit Do: Loop: Next: GoTo g3
- g2: For i = 0 To ii - 1: Do While i < 5: Set j(i) = Controls("pic" & v.hWnd & i): Exit Do: Loop: Do While i >= 5: Set j(i) = Controls("fra" & v.hWnd & i): Exit Do: Loop: Next
- g3: With v: Set j(ii).Font = .Font: j(ii).Caption = .Caption: For i = 0 To ii - 1: Select Case i
- Case 0: j(i).Move 0, 0, .Width, .Height
- Case 1: j(i).Move 0, 0, .Width, j(ii).Height
- Case 2: j(i).Move 0, 0, ll, .Height
- Case 3: j(i).Move .Width - ll, 0, ll, .Height
- Case 4: j(i).Move 0, .Height - ll, .Width, ll
- Case 5: j(i).Move 0, 0, .Width, .Height: Set j(i).Font = .Font: j(i).Caption = .Caption
- Case 6: j(i).Move 0, 0, .Width, .Height
- Case 7: j(i).Move -.Width + ll, 0, .Width, .Height
- Case 8: j(i).Move 0, -.Height + ll, .Width, .Height
- End Select: If i = 0 Or i > 4 Then j(i).BackColor = .BackColor
- Next: End With: Exit Do: Loop
- g4: Next
- g5: End Sub
- Function vbCtrlAdd(ID$, Optional ByVal MovePos&, Optional ByVal ctrLeft& = -1, Optional ByVal ctrTop& = -1, Optional ByVal ctrWidth& = -1, Optional ByVal ctrHeight& = -1, Optional ByVal ctrVisible = 1, Optional ByVal ctrContainer As Object, Optional ByVal ctrText$, Optional ByVal ctrVal) As Object: Const stW = 15, stH = 4, stN = 1000, z = "?:%!.*", cs = "check*%bo*%:nd.,fra?,i:ge,label,list*,option.,picture*,shape,text*,ti?r": Static l&, t&, w&, h&, i&, ii&, ll&, tt&, v, r&, j$(), jj$, k$, d As Object, cc As Object: k = cs: For Each v In Array("me", "ma", ",!", "com", "button", "box"): i = i + 1: k = Replace(k, Mid$(z, i, 1), v): Next: If Len(Join(j)) = 0 Then j = Split(k, ",")
- If Left(ID, 1) = "-" Then ID = Mid(ID, 2): r = IIf(r = 0, 5, r) Else r = IIf(r = 0, 90, r)
- If InStr(1, ID, ".") = 0 Then
- For i = 0 To UBound(j): If StrComp(Left(j(i), Len(ID)), ID, 1) = 0 Then ID = j(i): Exit For
- Next: jj = IIf(r = 90, "vb." & ID, "forms." & ID & ".1")
- Else: jj = ID: ID = Split(ID, ".")(1)
- End If: ID = ID & "_dyn_": On Error Resume Next: For ii = ii + 1 To (ii * 2 + 1): Err.Clear: If Not ctrContainer Is Nothing Then Set cc = ctrContainer
- If cc Is Nothing Then Set vbCtrlAdd = Controls.Add(jj, ID & ii): k = Me.hWnd Else Set vbCtrlAdd = Controls.Add(jj, ID & ii, cc): k = cc.hWnd
- If Err.Number = 0 Then Exit For
- Next: If d Is Nothing Then Set d = CreateObject("scripting.dictionary"): d.CompareMode = 1
- If Not IsArray(d(k)) Then v = Array(0, 0, 0, 0, 0, 0) Else v = d(k)
- l = v(0): t = v(1): ll = v(2): tt = v(3): w = v(4): h = v(5): ctrLeft = ctrLeft * r: ctrTop = ctrTop * r: ctrWidth = ctrWidth * r: ctrHeight = ctrHeight * r
- If ll > 0 Then '0 Вправо // 1 Ниже // 2 Вправо и выше //3 Ниже и левее
- Select Case MovePos
- Case 0, 2: ctrLeft = IIf(ctrLeft < 0, l + w + r, ctrLeft): t = IIf(MovePos = 2, tt, t): ctrTop = IIf(ctrTop < 0, t, ctrTop): ctrWidth = IIf(ctrWidth < 0, w, ctrWidth): ctrHeight = IIf(ctrHeight < 0, h, ctrHeight)
- Case 1, 3: l = IIf(MovePos = 3, ll, l): ctrLeft = IIf(ctrLeft < 0, l, ctrLeft): ctrTop = IIf(ctrTop < 0, t + h + r, ctrTop): ctrWidth = IIf(ctrWidth < 0, w, ctrWidth): ctrHeight = IIf(ctrHeight < 0, h, ctrHeight)
- End Select
- ElseIf ll = 0 Then ctrLeft = IIf(ctrLeft < 0, r, ctrLeft): ctrTop = IIf(ctrTop < 0, r, ctrTop): ctrWidth = IIf(ctrWidth < 0, r * stW, ctrWidth): ctrHeight = IIf(ctrHeight < 0, r * stH, ctrHeight): v(2) = ctrLeft: v(3) = ctrTop
- End If: With vbCtrlAdd: .Move ctrLeft, ctrTop, ctrWidth, ctrHeight: .Visible = ctrVisible: .Caption = ctrText: .Text = ctrText: .Value = ctrVal: End With
- v(0) = IIf(ctrLeft > l, ctrLeft, v(0)): v(1) = IIf(ctrTop > t, ctrTop, v(1)): v(4) = ctrWidth: v(5) = ctrHeight: d(k) = v
- End Function
- Sub remo(): Dim v: On Error Resume Next: For Each v In Controls: Controls.Remove v: Next: End Sub
- Private Sub c1_Click()
- remo
- vbCtrlAdd "lab", 1, 1, 1, ctrWidth:=100, ctrHeight:=4, ctrText:="Отметье важные папки для резервного копирования"
- vbCtrlAdd "Check", 1, 1, 12, ctrText:="Мои документы"
- vbCtrlAdd "Check", 1, 1, 17, ctrText:="Моя музыка"
- vbCtrlAdd "Check", 1, 1, 22, ctrText:="Мои рисунки"
- Set c2 = vbCtrlAdd("comm", 0, 1, 6, ctrWidth:=10, ctrText:="Назад <<")
- Set c3 = vbCtrlAdd("comm", 0, 11, 6, ctrWidth:=10, ctrText:="Далее>>")
- End Sub
- Private Sub c2_Click()
- Form_Load
- End Sub
- Private Sub c3_Click()
- MsgBox "Подождите пока мастер закончит удалять ваши данные, это займёт несколько минут"
- End Sub
- Private Sub Form_Load()
- remo
- vbCtrlAdd "lab", 1, 1, 1, ctrWidth:=100, ctrText:="Вас приветствует мастер форматирования жесткого диска" & vbLf & _
- "Если вы готовы к форматированию нажмите далее"
- Set c1 = vbCtrlAdd("comm", 1, 1, 6, ctrWidth:=10, ctrText:="Далее>>")
- Me.Caption = "Formatting"
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д