Поле для ввода значения ячейки> 20% ИЛИ <-20% - PullRequest
0 голосов
/ 05 января 2019

Я новичок в VBA и мне нужна помощь в некотором базовом коде, если кто-то из вас может быть так добр.

Я пытаюсь создать Msgbox для заполнения, когда расчет в данной ячейке> 20% ИЛИ <-20%. </p>

Я могу получить Msgbox для заполнения, когда значение> 20%, например, 36%. Но когда я пытаюсь заставить код делать то же самое для <-20%, например -49%, окно приглашения не загружается. Я попробовал несколько вариантов кода без особой удачи. </p>

ЭТО РАБОТАЕТ ШТРАФ:

Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("P27"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value >= "0.2" Then
                VBA.MsgBox "You have exceeded the reportable reconciliation limit of +/- 20%." & VBA.Constants.vbNewLine & "Please email sales@XXXX " _
                           , vbOKOnly, "IMPORTANT MESSAGE"
                Exit Sub
            End If
        Next
    End If
End Sub

ЭТО НИЧЕГО НЕ ДЕЛАЕТ:

Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("P27"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value <= "-0.2" Then        'This part is not executed properly
                VBA.MsgBox "You have exceeded the reportable reconciliation limit of +/- 20%." & VBA.Constants.vbNewLine & "Please email sales@XXXX " _
                           , vbOKOnly, "IMPORTANT MESSAGE"
                Exit Sub
            End If
        Next
    End If
End Sub

На самом деле, когда я пытаюсь использовать код для чего-то <20, т.е. <code>If xCell.Value <= "-0.2", Msgbox не заполняется.

1 Ответ

0 голосов
/ 05 января 2019

Вы используете строковое значение вместо числового, попробуйте If xCell.Value <= -0.2 Then вместо. Кроме того, вы можете объединить оба оператора в и оператор ifelse:

If xCell.Value >= 0.2 Then
        VBA.MsgBox "You have exceeded the reportable reconciliation limit of +/- 20%." & VBA.Constants.vbNewLine & "Please email sales@XXXX " _
, vbOKOnly, "IMPORTANT MESSAGE"
ElseIf xCell.Value <= -0.2 Then
        VBA.MsgBox "You have exceeded the reportable reconciliation limit of +/- 20%." & VBA.Constants.vbNewLine & "Please email sales@XXXX " _
, vbOKOnly, "IMPORTANT MESSAGE"
End if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...