Если переменные не определены, существуют ли значения по умолчанию для них?

Я создаю код для всплывающего сообщения как «Цель завершена», если целевая ячейка имеет значение больше 80.

Но если я ввожу переменные в ячейки, сообщение появляется. Зачем? и как его решить?

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$2" Then If Target.Value > 80 Then MsgBox "Goal Completed" End If End Sub 

Спасибо за ваше время!

Я бы использовал If Val(Target.Value) > 80 Then MsgBox "Goal Completed"

Всегда лучше включать Инструменты, Параметры. Обязательно включить переменную . Если нет, VBA объявит переменную при первом использовании, и если вы сделали опечатку в имени, будет создана новая переменная, и вы можете иметь плохое время для обнаружения ошибки, для exmple alSets и a1Sets .

Что касается вашего вопроса: строки инициализируются пустым, целые числа – 0 и т. Д. Для конкретного поведения тура используйте свой отладчик, чтобы проверить, что находится в переменной, и проверить, что происходит.

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address <> "$B$2" Then _ Exit Sub If IsError(Target.Value) Then _ Exit Sub If Target.Value = "" Then _ Exit Sub If Not IsNumeric(Target.Value) Then _ Exit Sub If Target.Value > 80 Then MsgBox "Goal Completed" End If End Sub 

Убедитесь, что значение на самом деле является числом, вы можете использовать что-то вроде IsNumeric() но вы можете получить ложный результат, поэтому я бы использовал сопоставление шаблонов для такого рода вещей:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then If Target.Value Like Application.Rept("[0-9]", Len(Target.Value)) Then If Target.Value > 80 Then MsgBox "Goal Completed" End If End If End Sub 

Примечание. Я также использовал событие Worksheet_Change которое больше подходит для такого рода требований.

Interesting Posts

Возвращение пустого из функции, определенной пользователем, фактически возвращает 0

Чтение содержимого из .xls или .xlsx файла с использованием Java и Apache poi

Есть ли проблема совместимости между макросами, написанными для XLS, XLSX и XLSM?

Простой скрипт для импорта csv, изменения столбцов и записи в python

Apache POI: таблицы клонирования, содержащие диаграммы

Интерактивная карта в макросе Excel

Как вывести несколько значений в один столбец для создания новых строк с этими значениями (повторяя всю другую информацию из исходной строки)?

Макро – копирование и вставка

Копировать / перемещать ячейки по идентификатору

Проводка ссылок на документы Excel в Lotus Notes

Ввод формулы длинного массива в Excel VBA с использованием метода Replace в качестве обходного пути

код имеет ошибку: невозможно получить свойство vlookup класса рабочей таблицы

Макрос VBA с формулой (Excel)

excel VBA, как нажать на onclick события div на IE11

Как читать и писать значения в excel с помощью java?

Давайте будем гением компьютера.