Можете исправить ошибки - VBA

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

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

программа некоректно работает,должна выводить значения как на скриншоте.но выводит только a и выжёт ошибку в этой строчке.можете исправить должно выводится как на скриншоте.и у меня не работает кнопка выход. Label2.Caption = Label2.Caption + Str(b)

Решение задачи: «Можете исправить ошибки»

textual
Листинг программы
Option Explicit
'
'
'Потребуется пустая форма без кнопок, надписей и прочего
'
'
Dim WithEvents Fr As MSForms.Frame
 
 
Private Sub CALC(Label1, Label2, Label3, Label4)
    Dim x, y, z  As Double
    Dim a, b, c, f  As Double
    On Error Resume Next
    x = Val(InputBox("Введитезначение x", "Ввод данных"))
    y = Val(InputBox("Введите значение y", "Ввод данных"))
    z = Val(InputBox("Введитезначение z", "Ввод данных"))
    a = Sqr(x) / 3 + y ^ (1 / 5) / 5
    MsgBox "При x = " & x & ", y = " & y & " функция а = " & a
    b = Sqr(x) / 3 + y ^ (1 / 5) / 5
     
     
    MsgBox "При x = " & x & " функция b = " & b
    c = (2 * x ^ 3 - 1) / (Tan(x) ^ 3 - Sin(y))
     
    MsgBox "При x = " & x & ", y = " & y & " функция c = " & c
    f = (2 * x ^ 3 - 1) / (Tan(x) ^ 3 - Sin(y))
     
    MsgBox "При x = " & x & ", y = " & y & ", z = " & z & " функция f = " & f
     
    Label1.Caption = Label1.Caption + Str(a)
     
    Label2.Caption = Label2.Caption + Str(b)
     
    Label3.Caption = Label3.Caption + Str(c)
     
    Label4.Caption = Label4.Caption + Str(f)
 End Sub
 
 
 
 
Private Sub Caller(ByVal Ctrl As Control)
    On Error Resume Next
    Static wsh As Object: Do While wsh Is Nothing: Set wsh = CreateObject("WScript.Shell"): Exit Do: Loop
    Select Case LCase(Ctrl.Name)
    Case "tb1": CALC Controls("lb1"), Controls("lb2"), Controls("lb3"), Controls("lb4") 'Вычисление
    Case "tb2": AllClear 'Очистка
    Case "tb3": Unload Me ' Выход
    Case "tb4": wsh.Run "https://money.yandex.ru/to/410012701950682/100", 1, 1
    End Select
End Sub
 
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
    Dim v
    For Each v In Controls
        If Left(v.Name, 2) = "Tb" Then
            If v.Value Then
                v.Value = 0
                Caller v
            End If
        End If
    Next
End Sub
 
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
    Dim v
    For Each v In Controls
        If Left(v.Name, 2) = "Tb" Then
            If x > v.Left And x < (v.Left + v.Width) And y > v.Top And y < (v.Top + v.Height) Then v.Value = 1
        End If
    Next
End Sub
 
 
Private Sub AllClear()
    Dim v, i&
    On Error Resume Next
    For Each v In Controls
        Select Case TypeName(v)
        Case "ToggleButton", "Label"
            i = i + 1: v.Caption = Choose(i, "A = ", "B = ", "C = ", "F = ", "Вычислить", "Очистить", "Выход", "Поблагодарить")
        End Select
    Next
End Sub
 
 
Private Sub UserForm_Initialize()
    Const r = 5
    Dim i&, l&, t&, w&, h&
    Set Fr = Controls.Add("Forms.Frame.1", "fr", 1)
    With Fr
        .Move Me.Left, Me.Top, Me.Width, Me.Height: .BorderStyle = 0: .Enabled = 0
    End With
    Def l, r, t, r, w, 50 * r, h, 3 * r
    For i = 1 To 4
        With Fr.Controls.Add("forms.label.1", "Lb" & i, 1)
            .Move l, t, w, h: t = t + 20
        End With
    Next
    Def w, 30 * r, h, 4 * r
    For i = 1 To 4
        With Fr.Controls.Add("forms.ToggleButton.1", "Tb" & i, 1)
            .Move l, t, w, h: t = t + 25
        End With
    Next
    Call AllClear
End Sub
 
Private Sub Def(ParamArray w()): Dim i&: For i = 0 To UBound(w) Step 2: w(i) = w(i + 1): Next: End Sub

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


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

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

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