Расчет значений функции от начального значения до конечного - VB

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Прошу Вашей помощи с таким заданием. Создать диалоговое окно с тремя полями ввода:

Начальное значение

,

Конечное значение

,

Шаг

. Помимо этого необходим

Счетчик

и две кнопки:

ОК

и

Рабочий лист

. При нажатии кнопки

ОК

происходит расчет значений функции от начального значения до конечного. Результат выводится в диалоговое окно. При нажатии кнопки

Рабочий лист

результат выводится на рабочий лист. Номер листа устанавливается счетчиком. При разработке программы предусмотреть проверку согласованности начального и конечного значений. Функция может быть абсолютно любая с тремя переменными. Заранее спасибо.

Решение задачи: «Расчет значений функции от начального значения до конечного»

textual
Листинг программы
  1. Option Explicit
  2. Dim WithEvents c1 As CommandButton
  3. Dim WithEvents c2 As CommandButton
  4. Dim WithEvents c3 As CommandButton
  5.  
  6. 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
  7. 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
  8. 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
  9. g3:         With v: Set j(ii).Font = .Font: j(ii).Caption = .Caption: For i = 0 To ii - 1: Select Case i
  10.                         Case 0: j(i).Move 0, 0, .Width, .Height
  11.                         Case 1: j(i).Move 0, 0, .Width, j(ii).Height
  12.                         Case 2: j(i).Move 0, 0, ll, .Height
  13.                         Case 3: j(i).Move .Width - ll, 0, ll, .Height
  14.                         Case 4: j(i).Move 0, .Height - ll, .Width, ll
  15.                         Case 5: j(i).Move 0, 0, .Width, .Height: Set j(i).Font = .Font: j(i).Caption = .Caption
  16.                         Case 6: j(i).Move 0, 0, .Width, .Height
  17.                         Case 7: j(i).Move -.Width + ll, 0, .Width, .Height
  18.                         Case 8: j(i).Move 0, -.Height + ll, .Width, .Height
  19.                     End Select: If i = 0 Or i > 4 Then j(i).BackColor = .BackColor
  20.                 Next: End With: Exit Do: Loop
  21. g4: Next
  22. g5: End Sub
  23.  
  24. 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, ",")
  25.     If Left(ID, 1) = "-" Then ID = Mid(ID, 2): r = IIf(r = 0, 5, r) Else r = IIf(r = 0, 90, r)
  26.     If InStr(1, ID, ".") = 0 Then
  27.         For i = 0 To UBound(j): If StrComp(Left(j(i), Len(ID)), ID, 1) = 0 Then ID = j(i): Exit For
  28.         Next: jj = IIf(r = 90, "vb." & ID, "forms." & ID & ".1")
  29.     Else: jj = ID: ID = Split(ID, ".")(1)
  30.     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
  31.         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
  32.         If Err.Number = 0 Then Exit For
  33.     Next: If d Is Nothing Then Set d = CreateObject("scripting.dictionary"): d.CompareMode = 1
  34.     If Not IsArray(d(k)) Then v = Array(0, 0, 0, 0, 0, 0) Else v = d(k)
  35.     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
  36.     If ll > 0 Then '0 Вправо // 1 Ниже // 2 Вправо и выше //3 Ниже и левее
  37.        Select Case MovePos
  38.         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)
  39.         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)
  40.         End Select
  41.     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
  42.     End If: With vbCtrlAdd: .Move ctrLeft, ctrTop, ctrWidth, ctrHeight: .Visible = ctrVisible: .Caption = ctrText: .Text = ctrText: .Value = ctrVal: End With
  43.     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
  44. End Function
  45. Sub remo(): Dim v: On Error Resume Next: For Each v In Controls: Controls.Remove v: Next: End Sub
  46.  
  47. Private Sub c1_Click()
  48.         remo
  49.         vbCtrlAdd "lab", 1, 1, 1, ctrWidth:=100, ctrHeight:=4, ctrText:="Отметье важные папки для резервного копирования"
  50.         vbCtrlAdd "Check", 1, 1, 12, ctrText:="Мои документы"
  51.         vbCtrlAdd "Check", 1, 1, 17, ctrText:="Моя музыка"
  52.         vbCtrlAdd "Check", 1, 1, 22, ctrText:="Мои рисунки"
  53.         Set c2 = vbCtrlAdd("comm", 0, 1, 6, ctrWidth:=10, ctrText:="Назад <<")
  54.         Set c3 = vbCtrlAdd("comm", 0, 11, 6, ctrWidth:=10, ctrText:="Далее>>")
  55. End Sub
  56.  
  57. Private Sub c2_Click()
  58.     Form_Load
  59. End Sub
  60.  
  61. Private Sub c3_Click()
  62.     MsgBox "Подождите пока мастер закончит удалять ваши данные, это займёт несколько минут"
  63. End Sub
  64.  
  65. Private Sub Form_Load()
  66.     remo
  67.     vbCtrlAdd "lab", 1, 1, 1, ctrWidth:=100, ctrText:="Вас приветствует мастер форматирования жесткого диска" & vbLf & _
  68.         "Если вы готовы к форматированию нажмите далее"
  69.     Set c1 = vbCtrlAdd("comm", 1, 1, 6, ctrWidth:=10, ctrText:="Далее>>")
  70.     Me.Caption = "Formatting"
  71. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы