مایکل می تواند از یک فیلد برای درج تاریخ و زمان در یک سند استفاده کند. با این حال، او مایل است "زمان باقیمانده" را تا تاریخ و زمان آینده درج کند. به عنوان مثال، اگر تاریخ و زمان آینده 6:00 صبح در 1 دسامبر باشد، "زمان باقیمانده" به صورت "DDD:HH:MM (1 دسامبر 2022، ساعت 6:00 صبح)" نشان داده می شود و DDD روز است، HH ساعت بودن و MM بودن دقیقه.
این کار را نمی توان با استفاده از فیلدها انجام داد، اما می توان آن را با استفاده از یک ماکرو انجام داد. و اگر ماکرو شما متکی به استفاده از متغیرهای سند باشد، میتوانید آن را حداقل نیمه خودکار کنید. ماکرو نسبتاً کوتاه زیر را در نظر بگیرید:
Sub CalcDateInterval()
Dim dTargetDate As Date
Dim dFromNow As Date
Dim sTemp As String
Dim v As Variable
dTargetDate = DateValue("1 December 2022") + TimeValue("6:00:00 AM")
dFromNow = dTargetDate - Now()
sTemp = Format(Int(dFromNow), "#,##0") _
& Format(dFromNow, ":hh:mm") & " " _
& Format(dTargetDate, "(mmm. d, yyyy h:mm am/pm)")
For Each v In ActiveDocument.Variables
If v.Name = "CountDown" Then v.Delete
Next v
ActiveDocument.Variables.Add Name:="CountDown", Value:=sTemp
End Sub
ماکرو از تاریخ و زمان آینده (تنظیم شده در متغیر dTargetDate) برای محاسبه تعداد روزها، ساعت ها و دقیقه ها از هم اکنون تا آن زمان استفاده می کند. سپس این اطلاعات در رشته متن مورد نظر قالب بندی می شود و در متغیر سندی به نام CountDown قرار می گیرد.
از آنجایی که اطلاعات مورد نظر در یک متغیر سند وجود دارد، اکنون می توانید از یک فیلد برای ارجاع به مقدار آن متغیر استفاده کنید. در اینجا فرمت فیلدی است که می خواهید استفاده کنید:
{ DOCVARIABLE "CountDown" }
هر بار که می خواهید مقدار شمارش معکوس را دوباره محاسبه کنید، کافی است CalcDateInterval را مجدداً اجرا کنید و فیلدهای خود را به روز کنید. در صورت تمایل میتوانید CalcDateInterval را بهعنوان بخشی از کنترلکننده رویداد تنظیم کنید (بنابراین بر اساس هر رویدادی که در حال مدیریت است بهطور خودکار اجرا میشود)، اما همچنان باید فیلدها را بهروزرسانی کنید تا نتیجه را در سند خود ببینید.
همچنین به یاد داشته باشید که مقدار شمارش معکوس (رشته ای که مطابق میل شما کنار هم قرار می گیرد) "زنده" نخواهد بود. یک شمارش معکوس واقعی که هر دقیقه به روز می شود را نشان نمی دهد. مقدار بازگردانده شده توسط فیلد DOCVARIABLE تنها زمانی به روز می شود که شما فیلدها را به روز کنید، و این بر اساس به روز رسانی متغیر سند واقعی با استفاده از ماکرو CalcDateInterval است.