Разрешить помещать числа в текстовое поле, только если другое текстовое поле имеет> 0 - PullRequest
0 голосов
/ 10 мая 2019

Я хочу, чтобы текстовое поле не получало введенное число, если первое текстовое поле больше 0,00.Если textbox112> 0, тогда текстовое поле 113 должно быть пустым.

Я пробовал разные коды, чтобы заставить его работать без удачи.

Private Sub TextBox113_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Trim(TextBox112.Text) <> "" Then
        If Len(TextBox113.Text) = 0 Then
            Select Case KeyAscii
                Case 45, 46, 48 To 58
                    'Do nothing. The - sign, decimal and any number is allowed in first position.

                Case Else
                    Beep
                    KeyAscii = 0

            End Select
        Else
            Select Case KeyAscii
                Case 48 To 58
                    'Do nothing. Any number is allowed

                Case 46
                    If InStr(TextBox113.Text, ".") > 0 Then
                        Beep
                        KeyAscii = 0
                    Else
                        'Do nothing.  One and only one decimal point allowed.
                    End If

                Case Else
                    Beep
                    KeyAscii = 0

             End Select
        End If
    Else
        ' I THINK I NEED CODE HERE TO NOT ALLOW ENTRY
    End If
End Sub

1 Ответ

0 голосов
/ 10 мая 2019

Попробуйте и посмотрите, будет ли это то, что вы хотите ...

Private strPreviousValue As String

Private Sub TextBox112_Change()
    Dim bEnabled As Boolean, strText As String

    strText = TextBox112.Text

    If Len(strText) > 0 And Not IsNumeric(strText) And strText <> "-" Then strText = strPreviousValue

    bEnabled = True

    If IsNumeric(strText) Then
        If strText > 0 Or strText = "-" Then
            bEnabled = False
        End If
    End If

    TextBox113.Enabled = bEnabled
End Sub

Private Sub TextBox112_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    strPreviousValue = TextBox112.Text
End Sub

... моя единственная проблема в том, что я не совсем понимаю ваше требование.Кроме того, я не очистил 2-е текстовое поле, я просто отключил его для демонстрационных целей, который можно явно изменить.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...