在vba中输入框日期范围?

时间:2013-10-17 15:21:06

标签: excel vba excel-vba 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 the date)

然后我可以放一个宏我已经完成了。所以我的宏只读取该范围内的数据。有可能吗?

2 个答案:

答案 0 :(得分:12)

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

打开VBA和您想要输入的表单。

在工具箱中右键单击并选择其他控件

enter image description here

然后在列表框中选择Microsoft Date and Time Picker Control:

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

将日期更改为您自己的日期并添加您的代码。

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

答案 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