研究个程序 运行可以提示最近过生日的好友 查询EXCEL表格里一列日期
我想问的是 如果比较2个日期 改怎么比较
假设我已经有当前日期 a 如何引用EXCEL里的日期 再来比较
请VB高手教教我列~~~谢谢!!!感激不尽
如果EXCEL不行 数据库也可以
讲的详细深入的 给你更多分!!
饿 一楼EXCEL好牛B 我拿你那个运行下是好用 但是想把他筛选出来 想比如数据很多的时候 一条一条看还是很复杂。。。 谢谢1楼的回答!
vb中用EXCEL比较日期 如何完成
答案:3 悬赏:40 手机版
解决时间 2021-04-05 21:37
- 提问者网友:姑娘长的好罪过
- 2021-04-05 01:30
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-04-05 01:44
'VB 访问 Excel
Private Sub Command1_Click()
Dim xlApp, xlBook, xlSheet, nStr As String
Dim L As Long, H As Long, H1 As Long, H2 As Long, L1 As Long, L2 As Long
On Error GoTo Exit1
Set xlApp = CreateObject("Excel.Application") '启动 Excel
xlApp.Visible = True '显示 Excel 主程序窗口。如果不想显示,可删除此语句
'打开一个工作簿
Set xlBook = xlApp.Workbooks.Open("C:\my.XLS")'生日的好友 Excel 文件
Set xlSheet = xlBook.Worksheets(1) '设置对第一个工作表的引用
'遍历指定列 的所有单元格
L = 1
Call MinMax(xlSheet.UsedRange, H1, H2) '行的 起点、结束序号
Call MinMax(xlSheet.UsedRange, L1, L2, True) '列的 起点、结束序号
'访问某单元格,用 xlSheet.Cells(H, L).Value 的形式,或 xlSheet.Cells(H, L).Text
For H = H1 To H2
nStr = xlSheet.Cells(H, L).Value
'****在此处插入 nStr 与日期 a 比较的语句
Next
Set xlSheet = Nothing: Set xlBook = Nothing
xlApp.Quit: Set xlApp = Nothing '关闭 Excel,释放变量引用
Exit Sub
Exit1:
Set xlSheet = Nothing: Set xlBook = Nothing
xlApp.Quit: Set xlApp = Nothing '关闭 Excel,释放变量引用
MsgBox "错误 " & Err.Number & ":" & vbCrLf & Err.Description, vbCritical
End Sub
Private Sub MinMax(nRange, nMin As Long, nMax As Long, Optional GetLie As Boolean)
If GetLie Then '列的 起点、结束序号
nMin = nRange.Column
nMax = nMin + nRange.Columns.Count - 1
Else '行的 起点、结束序号
nMin = nRange.Row
nMax = nMin + nRange.Rows.Count - 1
End If
End Sub
'参见我的QQ空间(32063270)文章
Private Sub Command1_Click()
Dim xlApp, xlBook, xlSheet, nStr As String
Dim L As Long, H As Long, H1 As Long, H2 As Long, L1 As Long, L2 As Long
On Error GoTo Exit1
Set xlApp = CreateObject("Excel.Application") '启动 Excel
xlApp.Visible = True '显示 Excel 主程序窗口。如果不想显示,可删除此语句
'打开一个工作簿
Set xlBook = xlApp.Workbooks.Open("C:\my.XLS")'生日的好友 Excel 文件
Set xlSheet = xlBook.Worksheets(1) '设置对第一个工作表的引用
'遍历指定列 的所有单元格
L = 1
Call MinMax(xlSheet.UsedRange, H1, H2) '行的 起点、结束序号
Call MinMax(xlSheet.UsedRange, L1, L2, True) '列的 起点、结束序号
'访问某单元格,用 xlSheet.Cells(H, L).Value 的形式,或 xlSheet.Cells(H, L).Text
For H = H1 To H2
nStr = xlSheet.Cells(H, L).Value
'****在此处插入 nStr 与日期 a 比较的语句
Next
Set xlSheet = Nothing: Set xlBook = Nothing
xlApp.Quit: Set xlApp = Nothing '关闭 Excel,释放变量引用
Exit Sub
Exit1:
Set xlSheet = Nothing: Set xlBook = Nothing
xlApp.Quit: Set xlApp = Nothing '关闭 Excel,释放变量引用
MsgBox "错误 " & Err.Number & ":" & vbCrLf & Err.Description, vbCritical
End Sub
Private Sub MinMax(nRange, nMin As Long, nMax As Long, Optional GetLie As Boolean)
If GetLie Then '列的 起点、结束序号
nMin = nRange.Column
nMax = nMin + nRange.Columns.Count - 1
Else '行的 起点、结束序号
nMin = nRange.Row
nMax = nMin + nRange.Rows.Count - 1
End If
End Sub
'参见我的QQ空间(32063270)文章
全部回答
- 1楼网友:逃夭
- 2021-04-05 03:26
excel中选择工具栏右键有个visualbasic的选项,选择后出现一个录制宏的工具。你可以选择点按钮开始宏录制,然后在excel中随机点击或者其他操作。按下录制停止键。然后点击visualbasic编辑器图标,就会看到你刚才录制宏的过程中你对excel的操作的后台程序(vb)。可以直接手动修改程你想实现的功能。
- 2楼网友:患得患失的劫
- 2021-04-05 03:14
楼主,为什么一定要VB呢 ?
我假设A1同学生日, B1输入公式:
=IF(ISERR(DATEDIF(TODAY(),A1,"yd")),"生日已过",IF(DATEDIF(TODAY(),A1,"yd")>=0,"这位同学还有 "&(A1-TODAY())&" 天过生日",0))
这行么?
想要筛选就改改吧,让B1等于具体天数:
=IF(ISERR(DATEDIF(A10,TODAY(),"yd")),"生日有误",DATE(YEAR(today()),MONTH(A10),DAY(A10))-TODAY())
负数表示已过,正数表示还没过
自动筛选下拉列表里可以自定义筛选条件,一个自定义里可以放两个条件:
如:第一个条件可以放 "小于等于" 值 放"7", 第二个条件放 "大于" 值放 "0"
这个筛选结果就是一周内过生日的同学
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯