VBA复制带货币格式单元格至A4后丢失千分位逗号问题求助
解决VBA写入单元格丢失千分位逗号的问题
问题根源
你当前代码里直接用ActiveSheet.Range("A1")获取的是单元格的原始数值,而非带格式的显示文本,所以A1里的千分位逗号这类格式信息不会被带入A4。
可行解决方案
1. 直接获取单元格的显示文本
用Range("A1").Text代替Range("A1"),就能拿到A1单元格肉眼看到的带千分位的完整格式文本:
Sub data() ActiveSheet.Range("A4") = "Daily PnL: " & ActiveSheet.Range("A1").Text & " $" End Sub
2. 手动指定格式输出
如果想固定格式(比如A1格式改动后也能保证千分位),用Format函数自定义数字格式:
Sub data() ' 格式代码#,#0.00表示千分位+两位小数,不需要小数就改成#,#0 Dim formattedStr As String formattedStr = Format(ActiveSheet.Range("A1").Value, "#,##0.00") ActiveSheet.Range("A4") = "Daily PnL: " & formattedStr & " $" End Sub
3. 给A4单元格设置格式(保留数值属性)
要是希望A4是可计算的数值类型,同时显示带格式的文本,先写入数值再设置单元格格式:
Sub data() ActiveSheet.Range("A4").Value = ActiveSheet.Range("A1").Value ' 自定义单元格显示格式,包含前缀和千分位 ActiveSheet.Range("A4").NumberFormat = """Daily PnL: ""#,##0.00 ""$""" End Sub
这种方式下A4本质还是数值,后续可以直接参与计算,同时显示符合要求的格式。
内容的提问来源于stack exchange,提问作者vbanewb
相关产品推荐
相关产品推荐

