Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2009, 14:28   #1
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию Обновление ячейки

С наступающим Новым годом.
Вопрос за первый класс,но не могу решить.
Необходимо создать строку с датами.
Отображаться должны дни.
Формат вступает в силу только после двойного нажатия на ячейкую
Как сразу с макроса добиться нужного отображения.
То же самое происходит и с формулами
Вложения
Тип файла: rar Вопрос.rar (11.5 Кб, 13 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 31.12.2009, 17:57   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Формат к ячейке применяется сразу, если явно указан тип заносимого в ячейку значения.

Вот так - работает:
Код:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    For n = 5 To 250
        Cells(3, n) = CDate(Format(Now + n - 5, "d.m.yyyy"))' заносим в ячейку ДАТУ
        Cells(3, n).NumberFormat = "d;@"
    Next
End Sub
А без CDate - нет:
Код:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    For n = 5 To 250
        Cells(3, n) = Format(Now + n - 5, "d.m.yyyy") ' заносим в ячейку ТЕКСТ
        Cells(3, n).NumberFormat = "d;@"
    Next
End Sub


PS: Я на Вашем месте использовал бы такой вариант кода:
Код:
Private Sub CommandButton1_Click()
    With Cells(3, 5).Resize(, 245)
        .Formula = "=TODAY() + Column() - 5"
        .NumberFormat = "d;@"
    End With
End Sub

Последний раз редактировалось EducatedFool; 31.12.2009 в 18:03.
EducatedFool вне форума Ответить с цитированием
Старый 31.12.2009, 18:33   #3
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

А можно вместо цикла написать одну строчку:
Код:
[E3:IT3].FormulaArray="=DAY(TODAY()+COLUMN(E3:IT3)-5)"
Aent вне форума Ответить с цитированием
Старый 31.12.2009, 18:55   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Спасибо.
Это был лишь пример.
С даты могут быть любые и начинаться с любого кода.
Я главное понял,что надо указывать явно тип данных.
Еще раз благодарю.С Новым Годом
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение книги Excel по названию ячейки и по пути ячейки IFRSoff Microsoft Office Excel 16 07.06.2012 16:58
данные 1 ячейки трансформировать в 2 ячейки user7789 Microsoft Office Excel 22 30.07.2009 16:25
Заполнить пустые ячейки ниже значениями из непустой ячейки ing60 Microsoft Office Excel 7 01.04.2009 04:20
Обновление ПО [Smarik] Общие вопросы Delphi 3 02.02.2009 09:00
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39