Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
123
返回列表 发新帖
楼主: qian123

[已解决]自动到期提醒

[复制链接]
发表于 2014-4-11 19:21 | 显示全部楼层
ww176185299 发表于 2014-4-11 17:30
老师你好,使用了这个VBA感觉很不错,请问假如X列为正式合同到期时间、Y列为试用期到期时间,如何实现在同 ...

msgbox的数据可以多行显示呀。
你可以上传你的数据。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2014-4-11 19:48 | 显示全部楼层
回复

使用道具 举报

发表于 2014-4-12 08:11 | 显示全部楼层
hwc2ycy 发表于 2014-4-11 19:21
msgbox的数据可以多行显示呀。
你可以上传你的数据。

我就借用一下楼主的附件吧,需要W、Y列到期同时提醒。
麻烦老师了!

管理人员名册.rar

23.49 KB, 下载次数: 5

回复

使用道具 举报

发表于 2014-4-12 09:26 | 显示全部楼层
ww176185299 发表于 2014-4-12 08:11
我就借用一下楼主的附件吧,需要W、Y列到期同时提醒。
麻烦老师了!
  1. Private Sub Workbook_Open()
  2.     Dim arrName, arrDate
  3.     Dim iRow As Long, i As Long
  4.     Dim sName1 As String, sName2 As String
  5.     Dim dDate As Date

  6.     iRow = Cells(Rows.Count, "B").End(xlUp).Row
  7.     arrName = Range("h2:h" & iRow).Value
  8.     arrDate = Range("v2:y" & iRow).Value
  9.     For i = 1 To UBound(arrName)
  10.         dDate = 0
  11.         If Len(arrDate(i, 2)) Then dDate = DateValue(arrDate(i, 2))
  12.         If Date < dDate And dDate - Date <= 15 Then
  13.             sName1 = sName1 & arrName(i, 1) & ":" & dDate & vbCrLf
  14.         End If
  15.         dDate = 0

  16.         If Len(arrDate(i, 4)) Then dDate = DateValue(arrDate(i, 4))

  17.         If Date < dDate And dDate - Date <= 15 Then
  18.             sName2 = sName1 & arrName(i, 1) & ":" & dDate & vbCrLf
  19.         End If
  20.     Next

  21.     If Len(sName1) Then
  22.         MsgBox "合同马上到期人员名单:" & vbCr & sName1
  23.     End If
  24.     If Len(sName2) Then
  25.         MsgBox "试用马上到期人员名单:" & vbCr & sName2
  26.     End If
  27. End Sub
复制代码
回复

使用道具 举报

发表于 2014-4-12 14:25 | 显示全部楼层
本帖最后由 ww176185299 于 2014-4-12 14:27 编辑
hwc2ycy 发表于 2014-4-12 09:26


版主你好,我用少量数据进行了测试,但发现提示不是很准确,麻烦审查下。
另外提醒能否在同一个对话框中显示?
谢谢!

管理人员名册2.rar

12.38 KB, 下载次数: 20

回复

使用道具 举报

发表于 2014-4-12 16:58 | 显示全部楼层
ww176185299 发表于 2014-4-12 14:25
版主你好,我用少量数据进行了测试,但发现提示不是很准确,麻烦审查下。
另外提醒能否在同一个对话框 ...
  1. Private Sub Workbook_Open()
  2.     Dim arrName, arrDate
  3.     Dim iRow As Long, i As Long
  4.     Dim sName1 As String, sName2 As String
  5.     Dim dDate As Date
  6.    
  7.     With Sheets("管理人员名册")
  8.         iRow = .Cells(Rows.Count, "B").End(xlUp).Row
  9.         arrName = .Range("h2:h" & iRow).Value
  10.         arrDate = .Range("v2:y" & iRow).Value
  11.     End With
  12.    
  13.     For i = 1 To UBound(arrName)
  14.         dDate = 0
  15.         If Len(arrDate(i, 2)) Then dDate = DateValue(arrDate(i, 2))
  16.         If Date < dDate And dDate - Date <= 15 Then
  17.             sName1 = sName1 & arrName(i, 1) & ":" & dDate & vbCrLf
  18.         End If

  19.         dDate = 0
  20.         If Len(arrDate(i, 4)) Then dDate = DateValue(arrDate(i, 4))

  21.         If Date < dDate And dDate - Date <= 15 Then
  22.             sName2 = sName2 & arrName(i, 1) & ":" & dDate & vbCrLf
  23.         End If
  24.     Next

  25.     MsgBox "合同马上到期人员名单:" & vbCr & sName1 & vbCrLf & "试用马上到期人员名单:" & vbCr & sName2
  26. End Sub
复制代码
sName2里变量名写错了,导致输出显示错误。改好了。


回复

使用道具 举报

发表于 2014-10-20 16:08 | 显示全部楼层

RE: 自动到期提醒

hwc2ycy 发表于 2014-4-12 16:58
sName2里变量名写错了,导致输出显示错误。改好了。

版主好,不好意思又需要求助了!
该表如果U列为员工出生日期,请问如何实现对生日进行提醒?(在同一个msgbox里提醒即可。)
管理人员名册3.rar (12.66 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2014-10-21 09:57 | 显示全部楼层
之前没有想到用辅助列,在vba里折腾“月-日”的比较总是不成功,于是换了一个思路增加一个“生日”的辅助列解决了问题。
不知道版主有没有更好的方法实现?如果有请回复以供学习!谢谢!
管理人员名册4.rar (13.33 KB, 下载次数: 11)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 02:03 , Processed in 0.678542 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表