复制时日期值会发生变化

时间:2016-07-01 10:56:37

标签: excel excel-vba vba

我的单元格包含一个简单的连接函数,D24与前一年(例如15)和自定义格式( MMM JJ

CONCATENATE("Apr ",$D$24)

当我使用VBA复制并粘贴这些单元时,然后" 4月15日"成为" 15.04.16"并且因为格式化" 4月16日"

Selection.Value = Selection.Value

这背后的原因是什么?还有另一种解决方案,而不仅仅是将格式更改为文本吗?

3 个答案:

答案 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.CopyRange.PasteSpecial Paste:=xlPasteFormats,因此您的格式会粘贴值。