【问题标题】:Input box date range in vba?vba中的输入框日期范围?
【发布时间】:2013-10-26 04:21:49
【问题描述】:

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

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

【问题讨论】:

    标签: vba excel date-range inputbox


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      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
      

      【讨论】:

      • +1。另请注意,当您传递文本时,VBA 会尽可能采用美国日期格式。例如“06/10/2013”​​-> 2013 年 6 月 10 日(而不是 10 月 6 日),这可能会根据 OP 的区域设置产生一些不希望的结果。
      猜你喜欢
      • 2019-10-30
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多