Excel VBA:如何将单元格显示值(含数字格式)转字符串写入目标单元格
解决方案
方法1:调整赋值与格式设置的顺序
你之前的代码顺序搞反了——Excel会先根据目标单元格的现有格式解析赋值内容,再应用新格式,导致显示异常。正确顺序是先设置目标单元格为文本格式,再写入内容:
DestinationCell.NumberFormat = "@" ' 先设为文本格式 DestinationCell.Value = CurrentLocationCell.Text ' 再写入显示文本
方法2:强制文本输入(解决特殊格式自动转换问题)
如果方法1还是出现Excel自动转格式的情况(比如带%的文本被转成百分比数值),可以在写入的文本前加一个英文单引号(Excel的文本前缀标记),强制按纯文本存储:
DestinationCell.Value = "'" & CurrentLocationCell.Text
这个单引号不会在单元格显示,只会告诉Excel把内容当纯文本处理。
方法3:直接粘贴显示文本
如果遍历的单元格数量不多,也可以用粘贴文本的方式,完全复刻源单元格的显示内容:
CurrentLocationCell.Copy DestinationCell.PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' 粘贴值和格式 ' 或者只粘贴文本 ' DestinationCell.PasteSpecial Paste:=xlPasteText Application.CutCopyMode = False ' 取消剪贴板状态
为什么不能用DestinationCell.Text = ...?
VBA里Range.Text是只读属性,只能用来读取单元格的显示文本,不能赋值,所以直接写会抛出运行时错误。
内容的提问来源于stack exchange,提问作者Repairer
相关产品推荐
相关产品推荐

