VBA高手帮帮忙,这个问题困扰我很久...
这是我们老师在讲完if语句和selectcase语句后布置的作业根据年份和月份判断这个月有几天?假设有同列相邻两个单元格分别输入年份和月份,在下面行的单元格输出月份的天数...
这是我们老师在讲完if 语句和select case语句后布置的作业
根据年份和月份判断这个月有几天?
假设有同列相邻两个单元格分别输入年份和月份,在下面行的单元格输出月份的天数
我每次编的代码都有错误...能否帮忙把正确代码打出来,急!谢了~
Sub month()
y = 年份(Range("a1").Value)
m = 月份(Range("b1").Value) 当我打完这两句时,提示“子过程或函数未定义”,呜呜~~~~(>_<)~~~~ ,怎么会这样? 展开
根据年份和月份判断这个月有几天?
假设有同列相邻两个单元格分别输入年份和月份,在下面行的单元格输出月份的天数
我每次编的代码都有错误...能否帮忙把正确代码打出来,急!谢了~
Sub month()
y = 年份(Range("a1").Value)
m = 月份(Range("b1").Value) 当我打完这两句时,提示“子过程或函数未定义”,呜呜~~~~(>_<)~~~~ ,怎么会这样? 展开
2个回答
展开全部
====
我说的替换是指连同“年份(×××××)和月份(×××××)”一起替换了
用新的代码吧 如下:
Sub month2day()
Dim m as integer,y as integer,d as integer 'integer是整数型数据,范围:-65535 ~ 65536(好像是这个)
'm: 月份;y:年份;d:输出的变量
'给老师的内容里面这些注释可以删除
y = cint(Cells(1, 1).Value)
'cint:将字符串转换成integer数值类型数据.
'单元格内容是字符串类型的
m = cint(Cells(1, 2).Value)
'同理
Select Case m
'选择分支 m(月份)
Case 1, 3, 5, 7, 8, 10, 12
'如果是1月,3月…………
d = 31
'返回的days天数就是31
Case 4, 6, 9, 11
'如果是4月,6月……
d = 30
'返回30天
Case 2
'如果是2月
d = iif(y Mod 4 <> 0 and y mod 400 <> 0,28,29)
'如果是闰年,返回28,否则返回29
End Select
'结束选择分支
Cells(2,1).value = trim(str(d)) '数值转字符串会出现空格因此用trim去掉空格 并且输出到单元格上
End Sub
'每一句都说好了 不懂的应该没了吧。
注释说明:
iif语句:如果第一个参数为true,则返回第二格参数,否则返回第三格参数;
y Mod 4 <> 0 and y mod 400 <> 0 这句 当y是闰年时候这个表达式返回false,是闰年返回true
不能用y Mod 4 = 0 or y mod 400 = 0的原因:
字面上是或者,只要两者成立一种就返回true,但是or逻辑运算当两者都为true返回false,因此比如y=2000的时候就有问题了。
我说的替换是指连同“年份(×××××)和月份(×××××)”一起替换了
用新的代码吧 如下:
Sub month2day()
Dim m as integer,y as integer,d as integer 'integer是整数型数据,范围:-65535 ~ 65536(好像是这个)
'm: 月份;y:年份;d:输出的变量
'给老师的内容里面这些注释可以删除
y = cint(Cells(1, 1).Value)
'cint:将字符串转换成integer数值类型数据.
'单元格内容是字符串类型的
m = cint(Cells(1, 2).Value)
'同理
Select Case m
'选择分支 m(月份)
Case 1, 3, 5, 7, 8, 10, 12
'如果是1月,3月…………
d = 31
'返回的days天数就是31
Case 4, 6, 9, 11
'如果是4月,6月……
d = 30
'返回30天
Case 2
'如果是2月
d = iif(y Mod 4 <> 0 and y mod 400 <> 0,28,29)
'如果是闰年,返回28,否则返回29
End Select
'结束选择分支
Cells(2,1).value = trim(str(d)) '数值转字符串会出现空格因此用trim去掉空格 并且输出到单元格上
End Sub
'每一句都说好了 不懂的应该没了吧。
注释说明:
iif语句:如果第一个参数为true,则返回第二格参数,否则返回第三格参数;
y Mod 4 <> 0 and y mod 400 <> 0 这句 当y是闰年时候这个表达式返回false,是闰年返回true
不能用y Mod 4 = 0 or y mod 400 = 0的原因:
字面上是或者,只要两者成立一种就返回true,但是or逻辑运算当两者都为true返回false,因此比如y=2000的时候就有问题了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询