是否可以基于当年创建动态下拉列表?例如,我想根据当年(2019)创建一个下拉列表;共有5个选项:
- 2019
- 2020
- 2021
- 2022
- 2023
然后,从2020年1月1日开始,下拉列表将自动更新为2020、2021、2022、2023和2024。这是否与数据验证下拉列表中的某些表达式有关?
是否可以基于当年创建动态下拉列表?例如,我想根据当年(2019)创建一个下拉列表;共有5个选项:
然后,从2020年1月1日开始,下拉列表将自动更新为2020、2021、2022、2023和2024。这是否与数据验证下拉列表中的某些表达式有关?
VBA中的“动态”验证可以通过在需要时每次重写验证来实现。更糟糕的是,可能是每次打开工作表,甚至是每次更改选择时,都可能是通过事件。
可以在excel中进行验证,而在VBA中,此列表以用逗号分隔的字符串形式传递。因此,字符串2019,2020,2021,2022,2023
是预期列表的一个很好的例子。可以使用不同的方法,可能循环是“最奇妙的一个”,但是只要值只有5,那么手动编写它们也可能是合适的。
TL DR -在Workbook_Open()
事件中运行它:
Sub TestMe()
Dim validationString As String
validationString = Year(Now()) & "," _
& Year(Now()) + 1 & "," _
& Year(Now()) + 2 & "," _
& Year(Now()) + 3 & "," _
& Year(Now()) + 4
With Worksheets(1).Cells(1,"A").Validation
.Delete
.Add Type:=xlValidateList,AlertStyle:=xlValidAlertStop,_
Operator:=xlBetween,_
Formula1:=validationString
End With
End Sub
,
将这些公式放在两个没有标题的单独表中,并从第1行开始
年份:
=YEAR(TODAY())+ROW()-1
月份第1列:
=SWITCH([@Column2],1,"Jan",2,"Feb",3,"Mar",4,"Apr",5,"May",6,"Jun",7,"Jul",8,"Aug",9,"Sep",10,"Oct",11,"Nov",12,"Dec")
和第2列:
=MONTH(DATE(YEAR(TODAY()),MONTH(TODAY())+ROW()-1,DAY(TODAY())))
..您将获得从当前日期开始的动态引用