ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: weiyingde

[分享] VBA法自动返回当前周次

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-17 09:20 | 显示全部楼层
weiyingde 发表于 2016-1-17 08:37
再看下面,为什么不等?
Sub 今年五一()

formate返回的是字符串,DateSeria返回的是日期值

TA的精华主题

TA的得分主题

发表于 2016-1-17 09:25 | 显示全部楼层
  1. Sub cdsr1()
  2. rq1 = DateValue("5 1") '省略年份,将使用当前年份和cdate一样
  3. MsgBox rq1
  4. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 09:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一指禅62 发表于 2016-1-17 09:03
请楼主体会一下:

Sub 获取当前日所处学期周次()
dim 周次
'附学期起始:
'   期别         学期开头日         学期结束日
’ 上学期        阳历9月1           阴历腊月15
'  下学期        阴历正月12         阳历7月1

' 注:阴阳历换算函数见附件: lunar,solar都是自定义函数。  
’    阳历转阴历函数lunar,阴历转阳历函数solar
   
rq = Format(Date, "yyyy-mm-dd")
rq1 = lunar(Date) '阳历对应的阴历日

rq2 = Format(Year(Date) & "/1/12", "yyyy-m-d") '阴历日,下学期的开头第一天
rq3 = Format(Year(Date) & "/7/1", "yyyy-m-d") ' 阳历日,下学期的结束的一天

rq4 = Format(Year(Date) & "/9/1", "yyyy-mm-dd")' 阳历日,上学期的开头第一天
rq5 = Format(Year(Date) & "/12/15", "yyyy-m-d")'阴历日,上学期的结束的一天

with worksheetfunction
If CDate(rq1) >= CDate(rq2) And CDate(rq) < CDate(rq3) Then '如果当前日期对应的阴历日大于当年的阴
'                                                            历正月12,同时当前阳历日小于当年7月1日
周次 = .RoundUp(Date / 7, 0) - .RoundUp(Val(.solar(Format(Year(Date) & "/1/12", "yyyy-m-d"))) / 7, 0) + 1
End If
If CDate(rq) >= CDate(rq4) And CDate(rq1) <= CDate(rq5) Then '如果当前阳历日期大于9月1日,同时
'                                                              当前日期对应的阴历日小于腊月15日
周次 = .RoundUp(Date / 7, 0) - .RoundUp(Val(Format(Year(Date) & "/9/1", "yyyy/mm/dd")) / 7, 0) + 1 '
End If
end with
msgbox 周数 '按说现在应该是21周,但没有结果。
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 09:42 | 显示全部楼层
附件如下,请帮忙!

怪哉:VBA求周次,无果.zip

24.98 KB, 下载次数: 72

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 09:46 | 显示全部楼层

谢谢提醒,感谢了,对日期和时间的处理,我确实比较陌生,多谢帮助

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 09:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yeminqiang 发表于 2016-1-17 09:20
formate返回的是字符串,DateSeria返回的是日期值

是这样的,怪不得。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 09:49 | 显示全部楼层
yeminqiang 发表于 2016-1-17 09:20
formate返回的是字符串,DateSeria返回的是日期值

无分可送,甚是遗憾!送句感谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 10:24 | 显示全部楼层
本帖最后由 weiyingde 于 2016-1-17 10:27 编辑
一指禅62 发表于 2016-1-17 09:03
请楼主体会一下:

一指禅62友,format函数得出的结果真是很怪,讨教一下其特点。到底是string,还是Date呢?如果不是的话,为什么在测试一中不显示:Variant的数据类型呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 11:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 weiyingde 于 2016-1-17 13:10 编辑

自行解决,代码如下:
Sub 获取当前日所处学期周次()
Dim zc, rq As Date, rq1 As Date, rq2 As Date, rq3 As Date, rq4 As Date, rq5 As Date, rq6 As Date, rq7 As Date
'附学期起始:
'   期别         学期开头日         学期结束日
'  上学期        阳历9月1           阴历腊月15
'  下学期        阴历正月12         阳历7月1

' 注:阴阳历换算函数见附件: lunar,solar都是自定义函数。
'    阳历转阴历函数lunar,阴历转阳历函数solar
   
rq = Format(Date, "yyyy-mm-dd")
rq1 = lunar(Date) '阳历对应的阴历日

rq2 = Format(Year(Date) & "/1/12", "yyyy-m-d") '阴历日,下学期的开头第一天
rq3 = Format(Year(Date) & "/7/1", "yyyy-mm-dd") ' 阳历日,下学期的结束的一天
rq4 = CDate(Format(Year(Date) & "/9/1", "yyyy-mm-dd"))  ' 阳历日,上学期的开头第一天
rq5 = Format(Year(Date) & "/12/31", "yyyy-mm-dd") '阳历十二月31日
rq6 = Format(Year(Date) & "/1/1", "yyyy-mm-dd") '阳历元旦
rq7 = Format(Year(Date) & "/12/15", "yyyy-m-d") '阴历日,上学期的结束的一天

With WorksheetFunction
If rq >= rq4 And rq <= rq5 Then
  zc = .RoundUp(Date / 7, 0) - .RoundUp(rq4 / 7, 0) + 1
ElseIf rq >= rq6 And CDate(rq1) <= CDate(lunar(rq7)) Then
  rq4 = CDate(Format(Year(Date) - 1 & "/9/1", "yyyy-mm-dd"))
  zc = .RoundUp(Date / 7, 0) - .RoundUp(rq4 / 7, 0) + 1
ElseIf CDate(rq1) >= CDate(lunar(rq2)) And rq <= rq3 Then
  zc = .RoundUp(Date / 7, 0) - .RoundUp(Val(solar(Format(Year(Date) & "/1/12", "yyyy-m-d"))) / 7, 0) + 1
End If


End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 13:30 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-25 07:54 , Processed in 0.024587 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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