Создать программу VBA, которая будет выполнять сложение или вычитание двух шестнадцатеричных чисел - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь заставить работать оба варианта сложения и вычитания и отображать правильный символ между каждым полем с надписью. Я столкнулся с ошибкой, которую VBA выделяет для меня. Поля A, B и C должны быть оценены как 10, 11 и 12. Когда вы щелкаете по блоку, он должен заполнить первое пустое поле значением. Когда оба поля заполнены, и вы нажимаете другую букву, ее не следует изменять, вместо этого значения будут блокироваться до тех пор, пока вы не нажмете «Очистить».

Текущий код:

Private Sub Addition_Click()
Me.Result = (Me.LblFirstNum + 0) + (Me.LblSecondNum + 0)
'lblresult = Val(LblFirstNum) + Val(LblSecondNum)
End Sub

Private Sub BtnA_Click()
    With LblFirstNum
        'to display text
        .Caption = "10"
        .TextAlign = fmTextAlignCenter
        'wrap text
        .WordWrap = True
        .Font.Size = 18
    End With
End Sub

Private Sub BtnB_Click()
    With LblSecondNum
        'to display text
        .Caption = "11"
        .TextAlign = fmTextAlignCenter
        'wrap text
        .WordWrap = True
        .Font.Size = 18
    End With 
End Sub

Private Sub BtnC_Click()
    With LblSecondNum
        'to display text
        .Caption = "12"
        .TextAlign = fmTextAlignCenter
        'wrap text
        .WordWrap = True
        .Font.Size = 18
    End With
End Sub



Private Sub Calculate_Click()
    'Me.Result = (Me.LblFirstNum + 0) + (Me.LblSecondNum + 0)
    lblresult.Value = Val(LblFirstNum.Value) + Val(LblSecondNum.Value)
End Sub

Private Sub Clear_Click()
    Unload UserForm1
    UserForm1.Show
End Sub

Private Sub CommandButton2_Click()
    'Exit Command
    UserForm1.Hide
End Sub

Private Sub Result_Change()
End Sub

Private Sub Label4_Click()  
End Sub

Private Sub LblFirstNum_Click()
End Sub

Private Sub LblSecondNum_Click()
End Sub

Private Sub LblSign_Click()
End Sub

Private Sub Subtraction_Click()
    'Me.Result = (Me.LblFirstNum + 0) - (Me.LblSecondNum + 0)
    lblresult.Value = Val(LblFirstNum.Value) - Val(LblSecondNum.Value)
End Sub

1 Ответ

0 голосов
/ 17 апреля 2020

В Calculate_Click() и Subtraction_Click() вы пытались извлечь текст, показанный на этикетке, используя LblFirstNum.Value и LblSecondNum.Value. Метки не имеют свойства «Значение». Правильное свойство для использования - «Заголовок».

В Addition_Click() неясно, является ли Result правильным именем элемента управления, на который вы пытаетесь сослаться. В другом месте этого кода у вас есть lblresult, поэтому вы должны установить sh, которое является правильным именем, и использовать его повсеместно.

Вы также можете проверить использование Unload в Clear_Click() (при условии, что UserForm1 - это форма, с которой мы работаем). Ваш текущий код, вероятно, приведет к ошибке автоматизации в строке UserForm1.Show

...