Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Проверка ячейки на заполнение даты и времени Добавлено: 21.01.09 09:19  

Автор вопроса:  alfred
Есть проблема!
Нужно организовать проверку на коррекность заполнения ячейки с датой и ячеку с временем.

пример:
Sub proverka()
i = 4
While ActiveSheet.Cells(i, 1) > 0
If ActiveSheet.Cells(i, 1).NumberFormat <>"m/d/yyyy" Then
MsgBox ("дата заполнено не коррекно, строка " & i)
End If
If ActiveSheet.Cells(i, 2).NumberFormat <> "h:mm;@" Then
MsgBox ("Время заполнено не коррекно, строка " & i)
End If
i = i + 1
Wend
End Sub


Код не совршенен, когда дата и время заполняется макросом с другого листа,значения в ячейку встают как текст а не дата.
Подправте код пожалуйста или предложите свое решение проблемы.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #1 Добавлено: 21.01.09 12:58
Cells(i, 1).NumberFormat - как ячейка отображает данные, а не что она хранит.
Проверять, по-моему, следует Cells(i, 1).Value любой из следующих функций:
VarType, TypeName, IsDate
При заполнении макросом используй ф-ию CDate.

Ответить

Номер ответа: 2
Автор ответа:
 alfred



Вопросов: 9
Ответов: 14
 Профиль | | #2 Добавлено: 21.01.09 13:06
Например....

Ответить

Номер ответа: 3
Автор ответа:
 alfred



Вопросов: 9
Ответов: 14
 Профиль | | #3 Добавлено: 21.01.09 14:12
Забыл указать что тоже самое происходит и с временем.
С датой разобрались. А как быть с временем. Ведь Time берется от date и нет такой функции IsTime ()

Ответить

Номер ответа: 4
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #4 Добавлено: 22.01.09 18:36
  1. R=4
  2. Cells(R, 1).NumberFormat = "dd.mm.yyyy"
  3. Cells(R, 1) = "1/2/2009" 'Date 'WorkSheets(?).Cells(?,?)
  4. 'кто-нибудь может объяснить, почему получается 2 января, а не 1 февраля?
  5. Cells(R, 2).NumberFormat = "hh:mm:ss"
  6. Cells(R, 2) = "5:15:45" 'Time 'WorkSheets(?).Cells(?,?)
  7. If VarType(Cells(R, 1)) <> vbDate Then _
  8.   MsgBox ("Дата заполнена не корректно, строка " & R)
  9. If (VarType(Cells(R, 2)) <> vbDouble) Or (Cells(R, 2) < 0) Or (Cells(R, 2) > 1) Then _
  10.   MsgBox ("Время заполнено не корректно, строка " & R)
Проверка правильности введения времени вроде получилась, но как-то коряво! Может, у кого есть другие вырианты? Поделитесь...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам