Установите текстовое поле на Сегодня / Завтра / Следующий день / и т. Д.автоматически? - PullRequest
3 голосов
/ 30 июня 2010

Я новичок в программировании на VBA, но сейчас я пытаюсь сделать слайд PowerPoint, который обновляется каждый день.Это слайд с прогнозом погоды, который отображается в нашем лобби, и в настоящее время я вручную обновляю семидневный прогноз каждый день, когда я захожу. Это означает, что пока я не захожу, он показывает текущий день как вчерашнюю дату, а семидневный прогнозпо-прежнему показывает вчерашнюю дату в прогнозе.В конечном счете, я хотел бы, чтобы он также автоматически отображал данные о погоде, но в рамках этого вопроса я просто пытаюсь выяснить, как отображать даты в текстовом поле для семи дней недели.

По сути, в верхней части заголовка есть: (например, среда, 30 июня 2010 г.)

Затем в столбцах указываются семь дней: (например, 30 июня, 1 июля, 2 июля)...)

Я хотел бы установить заголовок на текущую дату, как показано, а затем на семь текстовых полей ниже на текущий день, затем на завтра, на следующий день ... и так до седьмогодень.

Как мне увеличить DateTime?Спасибо!

Ответы [ 4 ]

5 голосов
/ 30 июня 2010

Если вы хотите продвинуться вперед на 1-дневные шаги, вы можете увеличить переменные DateTime, добавив к ним:

Dim d As DateTime
d = Now()

d = d + 1 ''# => tomorrow

Это работает, потому что внутренне DateTime представляется как число с плавающей запятой с целымдней до запятой и доли дней после запятой.(Следовательно, добавление 0.5 фактически добавит 12 часов, хотя я бы не рекомендовал делать это.)

Для более сложных операций, таких как добавление месяцев или часов, есть DateAdd() ( см. MSDN ).

d = DateAdd("h", 12, d)  ''#=> 12 hours

Вы также можете "добавить" отрицательные значения с помощью DateAdd().

3 голосов
/ 30 июня 2010

Вот это в Excel;имена функций VBA будут одинаковыми.Функции Format и DateAdd - это именно то, что вам нужно.

Public Sub writeDates()
Dim x As Date, i As Integer
    x = Now
    For i = 1 To 7
       ThisWorkbook.Worksheets(1).Range("A" & i).Value = Format(DateAdd("d", i, x), "dddd, mmmm dd, yyyy")
    Next
End Sub
2 голосов
/ 30 июня 2010

Эти ссылки должны немного помочь.

  1. Даты и время в Excel ;
  2. Дата и время .

Функция Now (), если вы хотите получить дату вместе со временем. Обратитесь к связанным статьям, представленным для дополнений и вычитаний. Date() должен получить вам только дату, если вам когда-нибудь будет интересно только дата дня.

Вот интересная статья о функциях VBA.

Общие сведения о функциях VBA и их использовании

1 голос
/ 26 августа 2011

, если вы все еще заинтересованы в этом, дайте мне знать, когда я завершил то же самое.я использую надстройку, которая дает мне события автоматизации, такие как смена слайдов, которые работают как pps, так как встроенные не работают после преобразования в pps (для автоматической загрузки ПК и автоматической загрузки презентации), которые называются autoevents, google it или напишите мнедля файла.После этого я обновляю форму с помощью (вы можете использовать nameit addin, чтобы назвать фигуры для простоты, или использовать непосредственное окно vba, чтобы продолжать изменять номера фигур, пока не найдете нужный стыд (боль в 2003 году) .... мойслайды меняются каждые 20 секунд, поэтому я обновляю время без секунд в форме.

У меня есть другие навороты и свистки, такие как чтение дат и с текстовой меткой для приветствия в блогах в определенные дни и т. д..

например, для временных обновлений ... сделано при автоматическом событии смены слайдов ActivePresentation.SlideMaster.Shapes (3) .TextFrame.TextRange.Text = Format (теперь, "dddd dd mmmm yyyy") & "."& Формат (теперь "чч: мм")

...