2013-10-17 115 views
1

我有一个Excel文件,并在第一列(A)我有一些日期如下:vba中的输入框日期范围?

17/10/2013 
18/10/2013 
19/10/2013 
20/10/2013 
21/10/2013 
22/10/2013 

其他列包含一些DATAS。我需要创建一个输入框,将日期范围内的所有内容都包含进去。我的意思是;我点击按钮,它会显示一个像我这样的弹出窗口:

insert start date: 17/10/2013 (i can decide the date) 
insert end date: 20/10/2013 (i can decide the date) 

然后我可以把我做的一个宏。所以我的宏只能读取该范围内的数据。可能吗?

回答

7

没有特定的日期类型,所以你必须做一些错误检查。下面是如何获得来自用户的日期一个想法:

Dim dateString As String, TheDate As Date 
Dim valid As Boolean: valid = True 

Do 
    dateString = Application.InputBox("Enter A Date: ") 

    If IsDate(dateString) Then 
    TheDate = DateValue(dateString) 
    valid = True 
    Else 
    MsgBox "Invalid date" 
    valid = False 
    End If 
Loop Until valid = True 
+2

+1。另请注意,当您传递文本时,VBA尽可能采用美国日期格式。例如“2013年6月10日” - >“2013年6月10日”(而不是10月6日),根据OP的区域设置可能会产生一些不良结果。 –

11

您可以将日期时间选择器添加到您的使用形式和测试输入你的范围如下:

打开VBA和您希望输入的表单。

在工具箱中单击右键,选择additiona控制

enter image description here

然后在列表框中选择Microsoft日期和时间选择器控件:

enter image description here

的控件添加到您的表格:

enter image description here

那么DTPicker1_Change()事件下的代码如下设置:

enter image description here

Private Sub DTPicker1_Change() 
If DTPicker1.Value < DateSerial(2013, 10, 20) And DTPicker1.Value > DateSerial(2013, 10, 15) Then 
    Debug.Print "Put Your Code Here" 
End If 
End Sub 

更改日期,以自己和添加代码。

注:有大量的这种控制内部设置,从颜色显示类型,复选框,下拉式的,默认值最小和最大的日期。而且自定义日期格式也可以基于区域设置应用。