برایان مایل است فقط با تایپ ماه و روز، تاریخ را وارد کند. اکسل سال را سال جاری فرض می کند، اما او دوست دارد برای دفعه بعدی که آن تاریخ رخ می دهد، سالی باشد. به عنوان مثال، اگر امروز 6/1/18 باشد و برایان نوع 7/1 باشد، اکسل به طور خودکار سال 2018 را در نظر می گیرد. اگر برایان 5/1 را در همان روز تایپ کند، اکسل باید سال 2019 را به عنوان 5/1 در نظر بگیرد. در حال حاضر در گذشته است برایان میداند که میتواند از فرمولی برای نمایش تاریخ در سلول دیگری استفاده کند، اما نمیداند که چگونه میتواند اکسل را به طور پیشفرض به این رویکرد تبدیل کند، زیرا در حال تایپ تاریخ در سلولها است.
این راه حل به غیر از بازی با تاریخ سیستم خود یا انجام برخی ویرایش ها در تاریخ های پس از ورود، نیاز به استفاده از یک ماکرو دارد. کنترل کننده رویداد زیر این کار را انجام می دهد:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If IsDate(Target) Then
If Target < Date Then
If Year(Target) = Year(Date) Then
Application.EnableEvents = False
Target.Value = DateAdd("yyyy", 1, Target)
Application.EnableEvents = True
End If
End If
End If
End Sub
برای افزودن این ماکرو به کتاب کار خود، کافیست روی برگه مربوط به کاربرگ که میخواهید در آن فعال شود کلیک راست کرده و سپس View Code را انتخاب کنید. در پنجره کد ایجاد شده، ماکرو بالا را اضافه کنید.
اکنون، هر زمان که تغییری در کاربرگ ایجاد میکنید، بررسی میشود که آیا تاریخ است یا خیر. اگر اینطور باشد و تاریخ قبل از تاریخ امروز باشد، یک سال به تاریخ اضافه می شود. توجه داشته باشید که کد بررسی می کند تا مطمئن شود که سال تاریخ وارد شده با سال جاری یکسان است. بدون این بررسی، هر تاریخ در گذشته - حتی تاریخ های چندین سال در گذشته - افزایش می یابد. احتمالاً این مورد در نظر گرفته نشده است، بنابراین چک گنجانده شده است.
ماکرو بر تاریخهای وارد شده به سلولهای متعدد در یک زمان تأثیر نمیگذارد و همچنین بر تاریخهایی که بهعنوان مقادیر متنی وارد شدهاند تأثیر نمیگذارد.