在编码日期

时间:2016-12-04 06:11:14

标签: excel vba excel-vba

我正在尝试提取选定月份和年份的用户表单中的所有数据条目。我可以让代码在我今年硬编码时运行正常,但我想要从文本框中取出年份。我使用TextboxCint()值转换为整数,并将其调整为"年"在我的if语句中。如果我写Cdate("3/1/2016"),我可以让它工作,但我想知道是否有办法运行它:Cdate("3/1/Year")。我试过这种方式并且在Cdate Im上得到一个类型匹配错误,这对VBA来说很新,所以请原谅我的愚蠢。

忽略"月"变量我只是用它来停止代码并逐步执行以查看它是否会进入我的if语句。

提前致谢。

我的代码

Private Sub OKBtn_Click()

Dim Sales As Range
Dim Year As Integer
Dim Month As Integer
Dim i As Integer

Year = CInt(YearText.Value)    
Set Sales = Worksheets("Sales").Range("A4")    

i = 0
If Sales.Offset(i, 1).Value >= CDate("3/1/2016") And Sales.Offset(i, 1).Value <= CDate(" 3/31/2016 ") Then
    Month = 1
End If  

1 个答案:

答案 0 :(得分:2)

为了让CDate起作用,你需要将括号内的蜇伤分成两部分

1.常数,在你的情况下“3/1 /".

2.变量CInt(YearText.Value)

Option Explicit

Private Sub OKBtn_Click()

Dim DDate As Date
DDate = CDate("3/1/" & CInt(YearText.Value))

' for debug only
MsgBox "Date entered is :" & DDate

End Sub