Расчет значений функции от начального значения до конечного - 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

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


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

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

8   голосов , оценка 4 из 5
Похожие ответы