Типы данных переменной

Программирование на Visual Basic for Applications
Гена
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 29.12.2003 (Пн) 16:37

Типы данных переменной

Сообщение Гена » 04.02.2004 (Ср) 11:10

Вроде бы все правильно, но...
Дело в том что бы сделать ряд операций нужно проверить значение переменной N пустое оно или нет.
Как я уже эту переменную не определял: Long, Single, Double - выдает ошибку на строке N = Cells(k, 31). Если задать тип Variant, то при пустом значении почему-то выполняется [statements].
Буду очень признателен за помощь.


dim N as double
N = Cells(k, 31)
If N <> Empty Then
....
End if

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 04.02.2004 (Ср) 11:19

ну так и проверяй тип самой ячейки
Код: Выделить всё
If VarType(Sheets(1).Cells(2, 2).Value) = vbEmpty Then
   
End If
Ничто так не ограничивает полёт мысли программиста, как компилятор

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.02.2004 (Ср) 11:21

Мысль первая. Специальные флаговые значения могут содержать, действительно, только Variant.
Мысль вторая. Если ты присваиваешь что-то в variant, то там со всей определённостью не будет empty. Там может быть nothing, null, vbnullstring, просто ноль в конце концов.
Мысль третья. А почему бы просто не N as string; N=cstr(cell); if len(n) then...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 04.02.2004 (Ср) 14:49

Да вот так проверяй пустую ячейку, Value это позволяет

if Sheets(1).Cells(2, 2).Value = "" then
..
end if

Гена
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 29.12.2003 (Пн) 16:37

Сообщение Гена » 04.02.2004 (Ср) 17:07

Ничего не получается. Мне нужно переменная N типа Double. Но при пустых значениях выдается ошибка на строке когда я ее определяю
N=cells(k,31). Далее идет большой блок if.
If N <> Empty Then
....
End if

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 04.02.2004 (Ср) 19:46

Я не понимаю, зачем вносить значение в переменную, что бы проверить пустая ли ячейка, вот это программа вывела мне все не пустые ячейки с 1-3 строку:

Код: Выделить всё
Sub nnn()
For i = 1 To 3
If Cells(i, 1).Value <> "" Then
  MsgBox Cells(i, 1).Value
End If
Next i
End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.02.2004 (Чт) 10:25

Сравнивать с Empty неправильно.
Должно быть типа этого:
Код: Выделить всё
If Not (IsEmpty(V) Or IsNull(V)) Then
  ...
End If
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 111

    TopList