在B栏的sheet1中我有名字在D栏的表1中我有生日日期
B:
Ben
Mikael
D:
3 MARCH 1987
3 JUNE 1976
我想找一个VBA脚本来制作一个弹出式msgbox并打印出“有10天或更短的时间,直到NAME(来自B栏)都有生日”。
如何做到这一点?
答案 0 :(得分:1)
在 E1 中输入:
=DATE(YEAR(D1)+DATEDIF(D1,TODAY(),"y")+1,MONTH(D1),DAY(D1))
并复制下来。然后在 F1 中输入:
=E1-TODAY()
并复制下来。
列 E 是即将到来的生日,列 F 是下一个生日的天数。
最后在工作表代码区域中,输入以下事件宏:
Private Sub Worksheet_Activate()
Dim cel As Range, F As Range
Set F = Intersect(ActiveSheet.UsedRange, Range("F:F"))
For Each cel In F
If cel.Value < 11 Then
MsgBox cel.Offset(0, -4).Value & " will have a birthday in " & cel.Value & " days"
End If
Next cel
End Sub
每当激活工作表时,您都会收到消息:
答案 1 :(得分:0)
我想我找到了一种方法来做我想做的事。
感谢您的亲切赞扬。
以下是我开始工作的代码。但是为了它的工作,我必须首先采取生日,并将其分为三个单元格,日,月和年。 然后我再次结合日和月而不是年份,而是使用了年份(now())并获得了今年的生日。
然后我可以使用下面的代码在dateadd中添加1-10天。
这感觉有点笨拙......但到目前为止,我认为它会起作用。
Sub checkearlybirthday()
Dim ans As String
Dim cell As Range
For Each cell In Sheets("Personal").Range("rf10:rf500")
If cell = DateAdd("d", 1, Date) Or cell = DateAdd("d", 2, Date) Or cell = DateAdd("d", 3, Date) Or cell = DateAdd("d", 4, Date) Or cell = DateAdd("d", 5, Date) Or cell = DateAdd("d", 6, Date) Or cell = DateAdd("d", 7, Date) Or cell = DateAdd("d", 8, Date) Or cell = DateAdd("d", 9, Date) Or cell = DateAdd("d", 10, Date) Then
ans = ans & vbNewLine & Sheets("Personal").Cells(cell.Row, 2).Value
End If
Next
If Len(ans) < 1 Then
Else
MsgBox "Hallå! " & vbNewLine & "Det är 10 dagar eller mindre till dessa fyller år. " & ans & " " & vbNewLine & ""
End If
End Sub