Я новичок в Excel Vba и задавался вопросом, может ли кто-нибудь помочь мне разобраться, как эффективно писать этот код.Ошибка несоответствия в Excel VBA
Я пытаюсь сравнить значения, используя инструкции Else-if, но я продолжаю получать ошибку несоответствия при запуске макроса. Это то, что я до сих пор: начала
Dim score1 As Variant, result1 As Variant
score1 = Range("B24").value
Sheets("Answers").Range("P1") = VarType(score1)
If VarType(score1) = 0 Then
result1 = "Error"
msg1 = " INPUT A VALUE"
ElseIf score1 > (((Range("I24").value - Range("H24").value) * 0.2) + ((Range("H24").value + Range("I24").value)/2)) Then
result1 = score1
msg1 = " Adjust the Left Flank of fH_Beta"
ElseIf score1 < (((Range("I24").value - Range("H24").value) * 0.2) - ((Range("H24").value + Range("I24").value)/2)) Then
result1 = score1
msg1 = " Adjust the Left Flank of fH_Beta"
Else
result1 = "N/A"
msg1 = " No action required"
End If
Sheets("Answers").Range("F11").value = result1
ошибки появляется, когда я изменил две линии ELSEIF от> 2,3 и < -7.7 формул, представленных в коде. Мне нужно написать эти формулы, потому что значения (2.3 & -7.7) могут меняться в зависимости от приложения.
Кстати, первая строка (линия IF) должна сохранять сообщение об ошибке, если ячейка оставлена пустой. Я считаю, что ошибка имеет какое-то отношение ко мне, определяя переменные как тип «Двойной», но я не могу найти способ ее исправить (я также попытался сохранить varialbes As String и изменить каждое .value на .Text).
Любая помощь будет оценена по достоинству. Спасибо ...
**** Обновление: приведенный выше код теперь является текущим кодом, который у меня есть. Формула в этом коде должна принимать значения в I24 и H24 (-7.7 & 2,3) и давать верхний допуск -0,7 (линия с + в нем) и более низкий допуск -4,7 (линия с a - в нем) и используйте эти допуски для оценки ввода пользователя (B24).
Если ячейка оставлена пустой, код запускает первую линию IF и возвращает значение msg1 «INPUT A VALUE». Если пользователь вводит номер вне допустимого значения, код должен выдавать значение msg1 «Настроить левый фланг fH_Beta». Если ни одно из этих условий не выполняется, вход должен находиться в пределах допуска, а значение msg1 должно быть «Нет действий».
Моя проблема: независимо от того, какое значение я вставляю в B24 (даже значение в допустимой степени), я получаю значение msg1 «Настроить левый фланг fH_Beta», и я не знаю почему. Если мне нужно прояснить ситуацию, пожалуйста, дайте мне знать.
Благодаря
Вы не можете использовать ссылки диапазона в VBA так же, как в формулах. Вам нужно: «Диапазон (« I24 »). Значение - диапазон (« H24 »). Значение«, а не «I24 - H24», например. – Rory
Спасибо, Рори, я набрал все мои значения, как вы заявили, и изменил мои переменные на варианты, как сказал Батшеба, и мой код работает без ошибок. – Cam
Извините, я не закончил. Код все еще работает некорректно (т. Е. Я буду вводить число в B24, которое будет находиться между значениями 2.3 и -7.7 (которое должно быть по умолчанию для строки Else кода), но мой вывод все еще возвращает оператор msg1 найденный под линиями Elseif. – Cam