excel - 通过使用excel VBA仅引用一个数字来自动填充日期
问题描述
如果我们可以仅通过引用一个数字来填写日期怎么办?这种类型的功能将在某些 excel 场景中提高用户友好性。
例如:在 March 表中,当我在给定的日期列中键入“7”时,我插入该值的单元格将返回“07/03/19”(或 03/07/19)。
如果可能的话,这意味着我需要在 VBA 代码中指定此工作表的月份和年份,并为每个工作表(2 月等)更改此变量。如果工作表名称是月份名称(例如“March”),甚至可以使用单一解决方案 VBA 代码来实现。下面的公式利用了它,所以我猜 VBA 可以做到。
=MONTH(DATEVALUE(MID(CELL("filename";$A$1);FIND("]";CELL("filename";$A$1))+1;255)&" 1"))
在名为“March”的工作表中输入此公式,它将返回“3”。
我一直在寻找一种简单的方法来做到这一点,但据我所知没有(直到你带上你的光芒:))。据我所知,数据验证功能无济于事。此外,插入数字的单元格会自动填充(而不是另一个单元格),这一点很重要。
这至少可能吗?我打赌是的。我被告知要查看事件函数,但我对 VBA 知之甚少。
解决方案
这可能需要修改以满足您的需求,但可能是使用Worksheet_Change
事件的解决方案。
工作表更改部分:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo SafeExit:
Application.EnableEvents = False
If Target.Cells.Count = 1 Then '
If Not Intersect(Target, Me.Columns("A")) Is Nothing Then 'change as needed
Target.Value = DateFromDay(Me.Name, Target.Value)
End If
End If
SafeExit:
Application.EnableEvents = True
End Sub
主功能
Public Function DateFromDay(monthName As String, dayNum As Integer) As Date
On Error Resume Next
DateFromDay = DateValue(dayNum & " " & monthName & " " & Year(Now()))
End Function
您也可以考虑将该Workbook_SheetChange
事件添加到多个工作表中。
推荐阅读
- c# - MOQ - 使用相同的参数调用相同的方法两次
- asp.net-mvc - 如何在 MVC 中引用全局虚拟包含?
- java - 俄语字符显示为 ??? 在 Spring-MVC 中
- python - KneighborsClassifier 给出与 linalg.norm 和 scipy.spatial.distance.euclidean 不同的欧几里得值
- linux - 通过删除扩展名后的字符来重命名 Linux 文件
- javascript - 节点 ExpressJS | 如何通过自定义查询参数验证
- php - 我正在寻找有关 WP 错误的建议。WP 更新后,插件页面和 WP-admi 将无法加载。函数 wpdb::prepare() 的参数太少
- python - 如何在 pandas 中选择与字符串列表匹配的行,而不仅仅是一个特定的字符串?
- unity3d - Unity Networking 回合制游戏
- java - Spring Boot - 处理请求体时引入等待时间