VBA生成超链接时日期转为数字序列号问题求助
问题原因
Excel 中日期的底层存储格式是数字序列号,单元格设置的yyyy-mm-dd仅为显示格式,直接进行字符串拼接时会调用底层的数值而非显示的格式化文本,因此会出现日期变为数字的问题。
修复方案
修改G列的拼接公式,使用TEXT()函数将日期字段强制转换为指定格式的字符串即可,同时可以简化冗余的选中、复制粘贴操作提升运行效率。
修改后完整代码
Sub CleanFollowUps() Dim Lrow As Integer Dim lCol As Integer Dim C As Range Lrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row lCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(Lrow, lCol)), , xlYes).Name = "FollowUps" ActiveSheet.ListObjects("FollowUps").TableStyle = "" Range("F1").FormulaR1C1 = "Helper" Range("F2").FormulaR1C1 = "=IF(SUM([@[Due today]]+[@Late])>0,""Yes"","""")" Range("G1").FormulaR1C1 = "Schedule" Range("H1").FormulaR1C1 = "day" Range("H2").FormulaR1C1 = "=TODAY()" Columns("H:H").NumberFormat = "yyyy-mm-dd" ' 将H列公式转值 Range(Range("H2"), Range("H2").End(xlDown)).Value = Range(Range("H2"), Range("H2").End(xlDown)).Value ' 核心修改:拼接时用TEXT函数格式化日期 Range("G2").FormulaR1C1 = _ "=""https://websitenamehere.com/agentView/""&[@Username]&""@company/""&TEXT([@day],""yyyy-mm-dd"")" ' 将G列公式转值 Range(Range("G2"), Range("G2").End(xlDown)).Value = Range(Range("G2"), Range("G2").End(xlDown)).Value ' 批量添加超链接 With Sheets("FU") For Each C In .Range("G2:G" & .Range("G" & .Rows.Count).End(xlUp).Row) .Hyperlinks.Add Anchor:=C, Address:=C.Value, SubAddress:=C.Value Next C End With Application.DisplayAlerts = True End Sub
补充说明
- 代码中移除了不必要的
Select操作,Excel VBA中直接操作单元格对象比选中后操作效率更高,也能避免屏幕闪烁问题 - 若不需要保留H列的日期字段,也可以直接在拼接公式中调用
TEXT(TODAY(),"yyyy-mm-dd"),省略H列的创建和赋值步骤
内容的提问来源于stack exchange,提问作者Lalaland
相关产品推荐
相关产品推荐

