Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

VBA:работа с ячейками и датами

2.1K
03 декабря 2006 года
Ariman
102 / / 20.10.2005
Доброго времени суток, уважаемые форумцы.

Раздела такого не нашел, решил написать сюда.

Есть один вопрос, который я не могу решить.

Имеется таблица в экселе, в нее с помощью формы вводятся данные,тоесть запускаем макрос, вводим данные,жмем кнопку записать,и данные структурировано записываются. Есть поле дата,которое являетс я типом Date. Задача: необходимо каждый раз при вызове формы проверять значения дат во всех строках (но в одном столбце),и если дата в ячейке на 30 дней меньше чем настоящая, то строку с данной датой нужно сносить.

Есть какая-нить функция в VBA типа Date.Now() или чего-нит типа того? Как узнать настоящую дату, и чтобы записать его в переменную.

Заранее спасибоза ответ.
267
04 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Ariman
Доброго времени суток, уважаемые форумцы.

Раздела такого не нашел, решил написать сюда.



Всё правильно. Именно сюда и надо писать по поводу Экселя, Ворда и прочего офиса.

Цитата:


Есть один вопрос, который я не могу решить.

Имеется таблица в экселе, в нее с помощью формы вводятся данные,тоесть запускаем макрос, вводим данные,жмем кнопку записать,и данные структурировано записываются. Есть поле дата,которое являетс я типом Date. Задача: необходимо каждый раз при вызове формы проверять значения дат во всех строках (но в одном столбце),и если дата в ячейке на 30 дней меньше чем настоящая, то строку с данной датой нужно сносить.



Не очень понятно, что такое "сносить". Удалять всю строку?

Цитата:

Есть какая-нить функция в VBA типа Date.Now() или чего-нит типа того? Как узнать настоящую дату, и чтобы записать его в переменную.



Ты почти угадал. Это пишется просто Now:

 
Код:
Dim t As Date
    t=Now


Функция Now возвращает полную дату, с текущим временем. Если тебе нужна только чистая дата, возьми от неё целую часть: Int(Now).
263
04 декабря 2006 года
koltaviy
816 / / 16.12.2004
Или:):
 
Код:
Public Sub GetCurrentDate()
Dim CurDate As Date
CurDate = Date
MsgBox CStr(CurDate)
End Sub
267
04 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: koltaviy
CStr(CurDate)



Можно и без CStr. Это всё паскалевские штучки... :)

2.1K
04 декабря 2006 года
Ariman
102 / / 20.10.2005
У мен полуилось так:

 
Код:
Dim date1 as Date
Dim date2 as Date

date1=now()
date2=format(date1, "d.mm.yyyy")


Теперь нужно вычитать из переменной date1, к примеру, значение в яйке range(1,1).Value

ТОлько нужно как-то преобразовать видимо значения, как не понимаю.

Вс еправильно, нужно удалять всю строку, просто очищать ее.
267
04 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Удалять и очищать - это разные вещи. Если очищать - то вместо данных остаётся пустая строка посреди таблицы, а если удалять - то и пустой строки не остаётся. Как именно надо?

А в остальном - примерно так (вариант с "удалять")
Код:
Dim w as Worksheet, i as Long
   
    Set w=ThisWorkbook.Worksheets("Лист1")
    i=2
    While w.Cells(i,1).Value<>""
       
        If w.Cells(i,1).Value<Now-30 Then
            w.Rows(i).Delete
         Else
            i=i+1
         End If

    Wend
263
04 декабря 2006 года
koltaviy
816 / / 16.12.2004
Цитата: Cutty Sark
Можно и без CStr. Это всё паскалевские штучки... :)


Это не "паскалевские штучки";), а лишь хороший тон программирования.. Я понимаю, что VB даст много чо сделать с переменными - можно их и не объявлять:)..
Просто если это окно сообщения, то оно по-любому отображает строку;)

2.1K
04 декабря 2006 года
Ariman
102 / / 20.10.2005
2Cutty Sark.Пасиба именно так и надо.

А если дату брать из календаря,там преобразования нужны?
267
05 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Ariman
2Cutty Sark.Пасиба именно так и надо.

А если дату брать из календаря,там преобразования нужны?



Из какого календаря? Если из настенного, то да.

263
05 декабря 2006 года
koltaviy
816 / / 16.12.2004
Цитата: Cutty Sark
Из какого календаря? Если из настенного, то да.


:D
Видимо человек имеет ввиду CalendarControl ?.?:)
Если так, то почему бы самому не попробывать, чем задавать вопросы, какие свойства и методы имеет тот контрол!!

 
Код:
Private Sub CommandButton1_Click()
MsgBox CStr(Me.Calendar1.Value)
End Sub
2.1K
05 декабря 2006 года
Ariman
102 / / 20.10.2005
Цитата: koltaviy
:D
Видимо человек имеет ввиду CalendarControl ?.?:)
Если так, то почему бы самому не попробывать, чем задавать вопросы, какие свойства и методы имеет тот контрол!!
 
Код:
Private Sub CommandButton1_Click()
MsgBox CStr(Me.Calendar1.Value)
End Sub


Именно CalendarControl.

Цитата:

Если так, то почему бы самому не попробывать, чем задавать вопросы, какие свойства и методы имеет тот контрол!!


Попробовал, дата выводится, вс е впорядке.Просто при вычитании говорил что несоответствие типов данных, вот и спросил во что нужно преобразовывать.

Огромное всем спасибо за ответы! Очень помогли. Дальше все сам. :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог