4

我有一个 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)

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

4

2 回答 2

14

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

打开 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

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

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

于 2013-10-17T15:46:14.263 回答
9

There is no specific date type so you'll have to do a bit of error checking. Here is one idea of how to get a date from a user:

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
于 2013-10-17T15:28:29.860 回答