Страницы: 1
RSS
Ищу функцию, которая возвращала бы 0, если пустая ячейка
 
Если ячейка без цифр, то в макросе ошибка в такой строке:

Код
Debug.Print CDec(Cells(ir, ic + 3) + Cells(ir, ic + 4) + Cells(ir, ic + 5))

есть ли функция типа
Код
 ifEmpty(Cells(ir, ic + 4),0)

которая бы возвращала 0, если в ячейке пусто?

 
Примат, может лучше Вам описать задачу решаемую с примером, а не искать какую-то функцию, так как это может оказаться неверный путь для решения  проблемы..
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Примат написал: Если ячейка без цифр
Цитата
Примат написал: если в ячейке пусто?
Это как бы 2 большие разницы. Вам что точно нужно?
Вот горшок пустой, он предмет простой...
 
Код
Sub test()
    If IsEmpty(Range("A1")) Then MsgBox "Empty"
    If IsNumeric(Range("A1")) Then MsgBox "Numeric"
End Sub
 
New,тогда получится длинный код. Если у меня много ячеек, то мне нужно для работы с ними писать кусок кода, где я буду проверять содержимое, вводить новые переменные.
Хочется красиво сделать.

Получается, в Excel VBA нет такой функции типа
Код
 ifEmpty(Cells(ir, ic + 4),0) 
?
Изменено: Примат - 23.09.2020 11:34:24
 
Цитата
Mershik написал: ...лучше Вам описать задачу решаемую с примером...
вот такой код не работает, когда в ячейках пусто. Я думал по умолчанию должно понимать как 0.
Код
                    FBcmd.CommandText = "UPDATE OR INSERT INTO BPOK (COMPANYID, IDPOK, MES, VALUEPOK) VALUES ("
                    FBcmd.CommandText = FBcmd.CommandText & CInt(COMPANYID) & ",3171," & Mid(wb.Name, 7, 4) & Mid(wb.Name, 5, 2) & ","
                    FBcmd.CommandText = FBcmd.CommandText & CDec(Cells(ir, ic + 3) + Cells(ir, ic + 4) + Cells(ir, ic + 5))
                    FBcmd.CommandText = FBcmd.CommandText & ") MATCHING (COMPANYID, IDPOK, MES)"
                    'Debug.Print FBcmd.CommandText
                    FBcmd.Execute

неужели нужно так делать?
Код
If Len(MyCell.Value) = 0 Then MyCell = 0
 
Цитата
Примат написал:
Хочется красиво сделать
ЧТО?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Примат написал:
Получается, в Excel VBA нет такой функции типа ifEmpty()
Есть IsEmpty()
 
использовал    
Код
IIf(IsNumeric(Cells(ir, ic + 6)), Cells(ir, ic + 6), 0)     
Изменено: Примат - 23.09.2020 12:43:30
 
осталось посмотреть, что возвращает IsNumeric для пустой ячейки)))
и еще раз подумать (сформулировать) что за задачу вы решаете?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
что возвращает IsNumeric для пустой ячейки
как что - True
 
Цитата
Примат написал:
Если ячейка без цифр, то в макросе ошибка
Цитата
использовал     Код ? 1IIf(IsNumeric(Cells(ir, ic + 6)), Cells(ir, ic + 6), 0)
в ячейке  IsNumeric(ПУСТО) вернет ПУСТО и в макросе снова ошибка, потому что ячейка без цифр, где тут логика?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
ActiveCell = IIf(IsNumeric(ActiveCell), CDbl(ActiveCell), 0)
Страницы: 1
Наверх