Расчет значений функции от начального значения до конечного - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д