vba中的输入框日期范围?

vba中的输入框日期范围?,vba,excel,date-range,inputbox,Vba,Excel,Date Range,Inputbox,我有一个excel文件,在第一列(A)中,我有如下日期: 17/10/2013 18/10/2013 19/10/2013 20/10/2013 21/10/2013 22/10/2013 其他列包含一些数据。我需要创建一个输入框,它接受日期范围内的所有内容。我是说;我单击按钮,它会显示一个弹出窗口,如: insert start date: 17/10/2013 (i can decide the date) insert end date: 20/10/2013 (i can decide

我有一个excel文件,在第一列(A)中,我有如下日期:

17/10/2013
18/10/2013
19/10/2013
20/10/2013
21/10/2013
22/10/2013
其他列包含一些数据。我需要创建一个输入框,它接受日期范围内的所有内容。我是说;我单击按钮,它会显示一个弹出窗口,如:

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

然后我可以把我做的宏。因此,我的宏只读数据在该范围内。可能吗?

没有特定的日期类型,因此您必须进行一些错误检查。以下是如何从用户处获取日期的一个想法:

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

您可以将日期-时间选择器添加到使用表单中,并按如下方式测试您的范围的输入:

打开VBA和需要输入的表单

在工具箱中单击鼠标右键,然后选择“附加控件”

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

将控件添加到窗体:

然后在DTPicker1_Change()事件下设置如下代码:

Private Sub-DTPicker1\u Change()
如果DTPicker1.ValueDateSerial(2013,10,15),则
调试。打印“将代码放在这里”
如果结束
端接头
将日期更改为您自己的日期并添加代码


注意:此控件中有大量设置,从颜色到显示类型、复选框、下拉样式、默认值最小日期和最大日期。此外,还可以根据区域设置应用自定义日期格式。

+1。还请注意,如果可能,当您传递文本时,VBA采用美国日期格式。例如,“06/10/2013”->2013年6月10日(而不是10月6日),根据OP的区域设置,可能会产生一些不希望的结果。
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