我认为我们需要 VBA 来做到这一点,但是: 我需要 A 列中的所有内容都成为工作表编号后面的日期。
我有 12 张名为 jan - fev - mar - abr ..... - dez (葡萄牙语月份名称)的表格 在工作表“jan”中,我需要在 A 列中输入的所有内容都成为 01 月的日期,例如:
我在a15中输入5,它变成05/01/2024(日/月/年) 如果我在 abr(四月) 表的 a17 中输入 12,它就会变成 12/04/2024 但我不知道怎么办!
我已经尝试使用聊天 gpt vba 但它不起作用。
在
ThisWorkbook
代码表中输入以下代码:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim rg As Range, rgInt As Range
Dim months, monthNum As Long, lastDay As Long, yr As Long
'Change if your abbreviations are different
months = Array("jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez")
Set rgInt = Intersect(Target, Sh.Columns(1))
If Not rgInt Is Nothing Then
Application.EnableEvents = False
With Application.WorksheetFunction
monthNum = .Match(Sh.Name, months, 0)
yr = Year(Date)
lastDay = Day(DateSerial(yr, monthNum + 1, 0))
'ensure day number is valid
For Each rg In rgInt
If rg.Value >= 1 And rg.Value <= lastDay Then
rg.Value = DateSerial(yr, monthNum, rg.Value)
Else
rg.ClearContents
End If
Next rg
End With
Application.EnableEvents = True
End If
End Sub