请教:为什么会出现类型不匹配?

cocly 2008-08-03 09:33:14
在VBA中如下代码:
Dim RowCounter As Long
RowCounter = Worksheets(1).UsedRange.Rows.Count()

Dim RowCycle As Long
Dim ActiveCell As Range
Dim AgeRange As Range
Dim SexRange As Range
Dim Age As Integer
Dim YearCount As Integer

For RowCycle = 1 To RowCounter

Set ActiveCell = Worksheets(1).Range("AI" & (RowCycle + 1))
Set AgeRange = Worksheets(1).Range("E" & (RowCycle + 1))
Set SexRange = Worksheets(1).Range("D" & (RowCycle + 1))

Age = CInt(Format(AgeRange, "yyyymmdd") / 10000) //这条语句出现类型不匹配
If (SexRange.Text = "男" & Age <= 1947) Then YearCount = Age - 1932
If (SexRange.Text = "女" & Age <= 1952) Then YearCount = Age - 1932
If (YearCount >= 0) Then ActiveCell.Value = CLng(YearCount * 1300) + CLng(15000) Else ActiveCell.Value = 15000

Next RowCycle

如上面代码,在调试中可以执行,但是在上面Age那一行出现“类型不匹配”的提示,请问是为什么呢?应该怎么修改?
谢谢大家~!
...全文
220 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocly 2008-08-03
  • 打赏
  • 举报
回复
是的,想取一个日期的年份
通过year(AgeRange)这种方式,没有错误了,但是前面的“类型错误”还是不知道错在什么地方。

非常感谢fvflove..
fvflove 2008-08-03
  • 打赏
  • 举报
回复
你是不是想取得他的年份?

如果是:那就这样了.
if isDate(ageRange) then
Age = year(AgeRange)
else
'ageRange数据错误,不是日期型数据
end if

cocly 2008-08-03
  • 打赏
  • 举报
回复
to fvflove
我修改了AgeRange列的类型后,还是出现了同样的问题,还有就是在之前定义X的时候应该是什么类型呢(或者说可以不定义X直接使用)?
cocly 2008-08-03
  • 打赏
  • 举报
回复
to fvflove
非常感谢,我修改了AgeRange列的类型后就解决了问题~!

因为才学用VBA,有很多东西都不清楚,如果可以的话希望多多向你请教。

QQ: 67195740
Email: cocly007@163.com
fvflove 2008-08-03
  • 打赏
  • 举报
回复
Age = CInt(Format(AgeRange, "yyyymmdd") / 10000)

这一句可以分解决为以下:

X=Format(AgeRange, "yyyymmdd")

age=Cint(X/10000)

问题出在
Format(AgeRange, "yyyymmdd")

上面.

如果AgeRange是一个不为空的数据的话.(而且必须是日期型的.比如:08/01/02等)

那没有什么问题.

如果不能满足我上面提到的要求,就会出现"类型不匹配"的错误.
cocly 2008-08-03
  • 打赏
  • 举报
回复
之前试过:
Age = Format(AgeRange, "yyyymmdd") / 10000
也出现同样问题,不知道是什么原因引起的。

2,461

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧