如以下这样就可以了,因为你在之前已经定义了Dim Rqq As Date, xqj As Integer, djz As Integer
所以到(ByVal Rqq, ByVal xqj, ByVal djz 就不匹配
还有Dim zc1 As Integer, zc As Integer,zc重定义了
=======================
Private Sub CommandButton1_Click()
Dim Rqq As Date, xqj As Integer, djz As Integer
Rqq = InputBox("请输入日期:")
Call XQCX(Rqq, xqj, djz)
MsgBox "查询的日期是星期" & xqj & Chr(13) & "第" & djz & "周", vbOKOnly, riqi
End Sub
Sub XQCX(rq As Date, zc As Integer, whyr As Integer)
'日期为需要输入的日期,zc 显示为星期几,whyr显示为第几周
'Date = "2010-11-15"
'zc = 1
'whyr = 3
Dim zc1 As Integer
Dim y As Integer, m As Integer, d As Integer
Dim Ns As Date
y = Year(rq)
m = Month(rq)
d = Day(rq)
Ns = y & "-1-1"
'*************************************************
'设置查询的日期为星期几
zc = Weekday(rq) - 1
If zc = 0 Then zc = 7
'*************************************************
'设置查询的日期为第几周
zc1 = Weekday(Ns) - 1
If zc1 = 0 Then zc1 = 7
whyr = (rq - Ns + zc1 - 1) \ 7 + 1
'************************************************
End Sub
楼上说的不是问题的重点,加不加Cdate无所谓,当然你要输入正确的格式,如2010/11/9,2010-11-9.vb会自动识别。
关键在于Call语句有问题。把Call XQCX(ByVal Rqq, ByVal xqj, ByVal djz)改为Call XQCX(Rqq, xqj, djz)
即可。
Call XQCX(ByVal Rqq, ByVal xqj, ByVal djz)中的ByVal应该在
定义函数或过程的时候使用,而不是在调用的时候用
Sub XQCX(ByVal rq As Date, ByVal zc As Integer, ByVal whyr As Integer)
Rqq = InputBox("请输入日期:")
Call XQCX(ByVal Rqq, ByVal xqj, ByVal djz)
InputBox得到的是String型的,而Rqq是要求Date型,
改成以下代码
S = InputBox("请输入日期:")
If IsDate(S) Then
Rqq = CDate(S)
End If
Call XQCX(ByVal Rqq, ByVal xqj, ByVal djz)
补充:
你就算先定义Rqq为Date,VB会根据你的赋值变换数据类型,
S定义为String,输入格式应该是VB可认的日期格式,比如2010/11/9之类的。