Проверить текст в Excel?

908
jase8888

Как я могу заставить свою функцию IF возвращать сообщение об ошибке, если в ячейку C4 не было введено ни одного номера? Мой код ниже запускается, если вы вводите число, но он также работает, если ячейка C4 пуста, только когда я ввожу текст в ячейку, появляется сообщение об ошибке.

Private Sub CommandButton1_Click() If IsNumeric(Range("C4")) = True Then FinishClear Else MsgBox "Please enter Invoice number" End If End Sub 
1
Sheets ("InvoiceList"). Activate - открывает лист myRow = Cells (Rows.Count, "A"). End (xlUp) .Row + 1 - находит следующий доступный номер в последовательности и добавляет 1 для следующего номера счета. jase8888 7 лет назад 0
затем оставшаяся часть кода копирует данные из таблицы счетов-фактур в таблицу счетов-фактур. Я не прошу, чтобы кто-то сделал мою работу, я спрашиваю, знает ли кто-то, что я должен делать, чтобы подтвердить это. Например, если в ячейке нет txt, C4, C5, C8 и т. Д. Отображают «пропущенный текст» и не отправляют данные в Invoicelist. jase8888 7 лет назад 0
Да, у меня это работает с If IsNumeric (Range ("C4")) = True Тогда ..... и он помещает код выше и работает, но если ячейка пуста, он должен отобразить сообщение msgbox, в котором нет номера счета - проблема в том, что если ячейка C4 пуста, она думает, что это число, и работает, чего я не хочу. jase8888 7 лет назад 0
Пожалуйста, отредактируйте свой пост и включите эту информацию, поскольку она показывает, что вы пробовали. Я тогда помогу это исправить Dave 7 лет назад 0
хорошо спасибо - я изменил вопрос, чтобы объяснить мою проблему лучше, я думаю .... jase8888 7 лет назад 0

2 ответа на вопрос

2
Gabriel Caron L'Écuyer

Ваша проблема в том, что IsNumeric()функция возвращает true, если ячейка пуста из-за ее определения. Смотрите документацию по IsNumeric()функции здесь

Чтобы проверить, пуста ли ячейка, вы можете использовать IsEmpty()функцию. Вы можете увидеть эту ссылку для получения дополнительной информации об этой функции.

Таким образом, в вашей функции вам необходимо убедиться, что ячейка не пуста и содержит числовое значение.

Private Sub CommandButton1_Click() If IsNumeric(Range("C4").value) And Not IsEmpty(Range("C4")) Then FinishClear Else MsgBox "Please enter Invoice number" End If End Sub 
Рекомендуется также вызывать значение диапазона, выполняя Range ("C4"). Value в вызове isnumeric функции, как обновлено в моем ответе, но просто вызов IsNumeric (Range ("C4")) также будет работать. Gabriel Caron L'Écuyer 7 лет назад 0
Вы также можете проверить, является ли ячейка пустой, с помощью Range ("C4"). Value <> "", как предложил Dave. Он будет работать так же хорошо, как и функция IsEmpty (), но потребует немного большей вычислительной мощности из-за неявных преобразований, необходимых VBA для достижения сравнения. Gabriel Caron L'Écuyer 7 лет назад 0
0
Dave

Проблема в том, что вы не называете ценность

Range("C4")это объект ячейки. Это имеет много свойств, одним из которых является ценность. Таким образом, вам нужно обновить доRange("C4").Value

Вы также проверяете, является ли оно числовым, но вам нужно проверить, пусто оно или нет.

Это означает, что ваше заявление должно быть

If Range("C4").Value <> "" Then 
спасибо за это, однако он по-прежнему отправляет следующую часть, если ячейка C4 пуста, не могу понять, почему jase8888 7 лет назад 0
Обновлено @ jase8888 Если вам все равно, числовое оно или нет, просто убедитесь, что оно не пустое. Dave 7 лет назад 0

Похожие вопросы