我有一个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)
然后我可以放一个宏我已经完成了。所以我的宏只读取该范围内的数据。有可能吗?
答案 0 :(得分:12)
您可以在使用表单中添加日期时间选择器,并按如下方式测试范围的输入:
打开VBA和您想要输入的表单。
在工具箱中右键单击并选择其他控件
然后在列表框中选择Microsoft Date and Time Picker Control:
将控件添加到表单中:
然后在DTPicker1_Change()事件下设置如下代码:
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
将日期更改为您自己的日期并添加您的代码。
注意: 此控件中有大量设置,从颜色到显示类型,复选框,下拉样式,默认值最小和最大日期。此外,还可以根据区域设置应用自定义日期格式。
答案 1 :(得分:8)
没有特定的日期类型,因此您必须进行一些错误检查。以下是如何从用户获取日期的一个想法:
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