VBA-从日期列表中选择用户输入的年份

VBA-从日期列表中选择用户输入的年份,vba,excel,Vba,Excel,我目前有一份工作表,其中日期按升序列在单独的行中,如下所示: 10/03/1995 29/04/1995 25/09/1995 11/07/1997 04/10/1997 02/04/1998 13/07/1998 23/08/1998 11/10/1998 05/06/1999 07/06/1999 10/06/1999 06/05/2000 03/07/2000 15/05/2001 09/07/2001 03/08/2002 11/08/2002 11/09/2002 12/10/2002

我目前有一份工作表,其中日期按升序列在单独的行中,如下所示:

10/03/1995
29/04/1995
25/09/1995
11/07/1997
04/10/1997
02/04/1998
13/07/1998
23/08/1998
11/10/1998
05/06/1999
07/06/1999
10/06/1999
06/05/2000
03/07/2000
15/05/2001
09/07/2001
03/08/2002
11/08/2002
11/09/2002
12/10/2002
16/11/2002
15/12/2002
22/01/2003
17/02/2003
14/03/2003
27/04/2003
28/05/2003
14/07/2003
15/08/2003
10/11/2003
05/12/2003
我打算实现一个输入框,用户可以在其中输入开始年份和结束年份。如果用户输入一个年份范围,例如1995-2000年,我如何只选择1995-2000年的所有日期而不必修改数据(例如使用分隔符“/”?

您可以使用Right(),正如Tripp指出的那样

Dim ws As Excel.Worksheet
Dim lRow As Long
Dim i as long
Dim j as long
Dim r as Range

Set ws = ActiveWorkbook.Sheets("Sheet1")
ws.Activate

    lRow = 1

    'Loop through and record what is in the first column
    Do While lRow <= ws.UsedRange.Rows.count

        if right(ws.Range("A" & lRow).Value, 4) >= lowYear and right(ws.Range("A" & lRow).Value, 4) <= highYear then

            if i = 0 then
                i = lRow
                j = lROw
            else
                j = lRow
            end if

        End if

        lRow = lRow + 1
        ws.Range("A" & lRow).Activate
    Loop

    Dim str As String
    str = "A" & i & ":A" & j
    Set r = Range(str)
    r.Select
Dim ws As Excel.工作表
暗淡的光线和长的一样
我想我会坚持多久
Dim j尽可能长
调光范围
设置ws=ActiveWorkbook.Sheets(“Sheet1”)
ws.Activate
lRow=1
'循环并记录第一列中的内容

当lRow=lowYear和right(ws.Range(“A”&lRow.Value,4)时,使用
AutoFilter
执行此操作,这样您就不必在所有行中循环

它会过滤范围内的日期,选择它们,然后删除过滤器

intYearStart = 1995
intYearEnd   = 2000
intLastRow   = Range("A1").End(xlDown).Row

With Range("A1:A" & intLastRow)
    .AutoFilter Field:=1, Criteria1:=">=1/1/" & intYearStart, Operator:=xlAnd, Criteria2:="<=12/31/" & intYearEnd
    .SpecialCells(xlCellTypeVisible).Select
    .AutoFilter
End With
intYearStart=1995
年终=2000年
intLastRow=范围(“A1”).End(xlDown).Row
带范围(“A1:A”和intLastRow)

.AutoFilter字段:=1,标准1:=“>=1/1/”&intYearStart,运算符:=xlAnd,标准2:=”
RIGHT()
是您的朋友。您所说的“选择”是什么意思“这太棒了!我应该说得更具体些,但我如何将这些值分配给一个范围,并仅选择这些值?您将如何处理这些值。为什么要选择它们?