如何将加粗文本与指定格式日期时间合并到Excel单元格?
问题:合并文本与日期时保留原日期格式
需要将特定加粗文本与另一工作表(Planilha3)中I3单元格的日期时间(格式为dd/mm/yyyy hh:mm AM/PM [BR])合并到指定单元格,现有VBA代码能完成合并,但日期时间格式丢失,需保留原格式。
原代码如下:
Sub Atualizar_Abertura() Dim LN7A As String, LN7B As String LN7A = "Próximo comunicado:" LN7B = Planilha3.Range("I3") Range("D23").Value = LN7A & " " & LN7B Range("D23").Font.Bold = False Range("D23").Characters(Start:=1, Length:=Len(LN7A)).Font.Bold = True Planilha5.Rows("23").AutoFit End Sub
解决方案
问题根源在于直接将单元格日期值赋值给字符串变量时,VBA会自动按系统默认日期格式转换,而非保留单元格设置的自定义格式。可以通过两种方法解决:
方法1:使用单元格的Text属性获取带格式文本
直接读取单元格显示的文本内容,而非底层日期值:
Sub Atualizar_Abertura() Dim LN7A As String, LN7B As String LN7A = "Próximo comunicado:" ' 改用Text属性获取单元格显示的格式化文本 LN7B = Planilha3.Range("I3").Text Range("D23").Value = LN7A & " " & LN7B Range("D23").Font.Bold = False Range("D23").Characters(Start:=1, Length:=Len(LN7A)).Font.Bold = True Planilha5.Rows("23").AutoFit End Sub
方法2:用Format函数手动指定格式
如果需要确保格式不受单元格显示设置影响,可直接通过Format函数强制转换日期值为目标格式:
Sub Atualizar_Abertura() Dim LN7A As String, LN7B As String LN7A = "Próximo comunicado:" ' 手动指定目标格式转换日期值 LN7B = Format(Planilha3.Range("I3").Value, "dd/mm/yyyy hh:mm AM/PM [BR]") Range("D23").Value = LN7A & " " & LN7B Range("D23").Font.Bold = False Range("D23").Characters(Start:=1, Length:=Len(LN7A)).Font.Bold = True Planilha5.Rows("23").AutoFit End Sub
两种方法都能保留需要的日期时间格式,方法1依赖单元格的显示格式设置,方法2更独立,可根据实际场景选择。
内容的提问来源于stack exchange,提问作者Gulkas
相关产品推荐
相关产品推荐

