excel - 使用 VBA 在 Excel 中基于当前年份的动态下拉列表
问题描述
是否可以根据当前年份创建动态下拉列表?例如,我想根据当前年份(2019)创建一个下拉列表;其中有 5 个选项:
- 2019
- 2020
- 2021
- 2022
- 2023
然后,从 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
推荐阅读
- c# - Asp.Net Core - Web 服务的可配置属性路由
- php - 致命错误:未捕获的错误:调用未定义的函数 mysqli 你能帮帮我吗
- sql - Oracle SQL - 使用选择生成聚合行
- angular - 尽管存在期望,但规范没有期望控制台错误
- python - Cython:将点索引分配给粗网格的最快方法
- ios - 如何在一个 tableView 上提供超过 2 个自定义单元格以进行聊天
- ruby-on-rails - Rails 嵌套 has_many 和附加上下文
- python - Excel 行的升序
- c - GCC 的 sqrt() 编译后如何工作?使用哪种root方法?牛顿-拉夫森?
- php - 无法从连接 API 获取连接