Если инструкция не выполняется должным образом в byval target as range

Этот код проверяет диапазоны ячеек на основе критериев, указанных в Worksheet_Change (ByVal Target As Range). По большей части это работает, за исключением одной аномалии. Когда диапазон SalesPrice изменяется, он проверяет значение ссуды: «Если моя сумма ссуды меньше 271 050 и значение checkbox1.value истинно», он переходит к следующей процедуре (это правильное поведение). Но если я изменю SalesPrice, которая повторно вычисляет LoanAmount, на число, которое приводит к тому, что LoanAmount превышает 271050, код MsgBox не выполняется. Но если я снова наберу ту же самую цену SalesPrice, она будет выполнена. Поэтому, чтобы он работал правильно, мне нужно дважды ввести SalesPrice, если chkbox1.value изначально был проверен на наличие кода, чтобы определить, что LoanAmount слишком велик.

If Target.Address = "$D$5" Then 'Sales Price
If Range("LoanProgram").Value Like "*HFA Bond Miami*" And _
Range("SalesPrice").Value > 317646 Then MsgBox "Miami-Dade Bond Max Sales 
Price is $317,646"
If Range("LoanAmount").Value > 271050 And Sheets("Main").CheckBox1.Value = 
True Then
MsgBox "MDEAT Max Loan Amount is $271,050"
Sheets("Main").CheckBox1.Value = False
End If

Событие worksheet_change сработает только в том случае, если вы вручную измените D5, если вы вручную измените любое место на листе, код проверит, было ли это D5, если это не так, тогда он выйдет из подпрограммы. Вычисления не являются событиями worksheet_change.

Davesexcel 31.10.2018 13:26

Можете ли вы правильно сделать отступ в коде и убедиться, что разрывы строк правильные? Неясно, являются ли ваши операторы If однострочными операторами или нет. Код в исходном виде не компилируется. Лучше всего скопировать / вставить код здесь и использовать Ctrl + K, чтобы отформатировать его как блок кода.

Pᴇʜ 31.10.2018 14:38

D5 вводится вручную.

MEC 31.10.2018 15:16
0
3
48
1

Ответы 1

Импортировать:

Application.EnableEvents = False
    If Target.Address = "$D$5"
    End If
Application.EnableEvents = True

сохраните файл, закройте его и снова откройте, чтобы сбросить Application.EnableEvents.

Не сработало, я поместил "Application.EnableEvents = False" сразу после строки "If Target.Address =" $ D $ 5 "Then" и поместил "Application.EnableEvents = True" после "End If"

MEC 31.10.2018 13:18

Вы можете включить события с Application.EnableEvents = True, назначенным кнопке, или вы можете ввести его в «немедленное окно» в редакторе vba, что очень помогает при тестировании кода.

Davesexcel 31.10.2018 13:32

У вас есть цитата после "Если"

Davesexcel 31.10.2018 13:34

просто примечание, но на вашем If нет Then;)

Pᴇʜ 31.10.2018 14:34

Другие вопросы по теме