Окно сообщения Excel, когда значение ячейки больше 100 - PullRequest
0 голосов
/ 08 марта 2019

У меня есть отчет, в котором есть 2 строки, первая - «Элемент», а вторая - «Вес».

будет вычислен «Вес», и если суммарный итог превышает 100%, в Excel появится окно предупреждения.

The form

Не могли бы вы, ребята, помочь мне найти способ сделать это в Excel?

это скрипт, который я использую раньше:

Private Sub Worksheet_Change(ByVal Target As Range)
    Set Target = Me.Range("A2:B10")
    If Target.Value > 100 Then
        MsgBox "You exceeded 100"
    End If
End Sub

Ответы [ 2 ]

1 голос
/ 08 марта 2019

«Вес» будет рассчитан

так что вы можете сделать 1 из двух вещей: 1) основать событие worksheet_change на ячейке, которая будет изменена, чтобы повлиять на расчет, и проверить результат расчета:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Me.Range("A2:B10") is nothing Then
        If Me.Range("A2").Value > 100 Then 
            MsgBox "You exceeded 100"
       End If
    End If

End Sub

или 2) вы можете использовать Событие вычисления, оно будет срабатывать каждый раз, когда лист вычисляет:

Private Sub Worksheet_Calculate()

    If Range("A2").Value > 100 Then 
        MsgBox "You exceeded 100"
    End If

End Sub
0 голосов
/ 08 марта 2019

Возможно, это то, что вы имели в виду?

Private Sub Worksheet_Change(ByVal Target As Range)

    With Target
        If Not Application.Intersect(Range("A2:B10"), Target) Is Nothing Then
            If .Value > 100 Then
                MsgBox "You exceeded 100"
            End If
        End If
    End With
End Sub

Приведенный выше код будет работать только в том случае, если была изменена одна из ячеек в диапазоне (A2: B10).Он будет смотреть на измененную ячейку (то есть Target ) и выдаст сообщение, если ее значение больше 100.

Ссылаясь на ваш комментарий, приведенный ниже вариант приведенного выше кода будетНарисуйте общее количество ячеек в контролируемом диапазоне, выдайте сообщение, если это общее число превышает 1, и верните выбор в неисправную ячейку.Обратите внимание, что проценты выражены делением на 100. Поэтому значение 1 будет отображаться как 100%.

Private Sub Worksheet_Change(ByVal Target As Range)
    Const RangeAddress As String = "A2:B10"
    Dim Ttl As Double

    With Target
        If Not Application.Intersect(Range(RangeAddress), Target) Is Nothing Then
            Ttl = Application.WorksheetFunction.Sum(RangeAddress)
            If Ttl > 1 Then
                MsgBox "You exceeded 100%"
                .Select
            End If
        End If
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...