我的单元格包含一个简单的连接函数,D24与前一年(例如15)和自定义格式( MMM JJ )
CONCATENATE("Apr ",$D$24)
当我使用VBA复制并粘贴这些单元时,然后" 4月15日"成为" 15.04.16"并且因为格式化" 4月16日"
Selection.Value = Selection.Value
这背后的原因是什么?还有另一种解决方案,而不仅仅是将格式更改为文本吗?
答案 0 :(得分:2)
Excel通常会尝试将看起来像日期的任何内容转换为实际日期(序列号,其中1 = 1900年1月1日)。避免这种情况的一种方法是,如上所述删除公式,将预格式化为文本。所以:
With Selection
.NumberFormat = "@"
.Value = .Text
End With
可能会做你想要的。
还有其他方法,但如果您不将单元格格式更改为文本,或者使用单引号'
为条目添加前缀,则对该单元格的任何后续编辑(即使是无意中的选择)都会引发将其转换为实际日期的风险。
答案 1 :(得分:2)
这取决于你想要的细胞。你想要一个字符串或日期吗?
如果你想要一个字符串:
格式为文字或
添加':CONCATENATE("'Apr ",$D$24)
如果你想要约会:
=DATE($D$24,4,1)
答案 2 :(得分:0)
如果你只是复制粘贴它,只粘贴值而不是格式化(如果我没记错的话)
尝试avoid使用Selection
而不是Range
。
并使用Range.Copy
和Range.PasteSpecial Paste:=xlPasteFormats
,因此您的格式会粘贴值。