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