date值在复制时发生更改

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

CONCATENATE("Apr ",$D$24)

当我用VBA复制和粘贴这些单元格时,“4月15日”变成了“15.04.16”,由于格式化“4月16日”

Selection.Value = Selection.Value

这是背后的原因吗? 除了将格式更改为文本之外,还有其他解决scheme吗?

Excel通常会将看起来像date的任何东西转换成真实的date(序列号,其中1 = 1 Jan 1900)。 避免这种情况的一种方法是,如上所述删除公式,就是预先格式化为文本。 所以:

 With Selection .NumberFormat = "@" .Value = .Text End With 

可能做你想做的事情。

还有其他的方法,但是如果你不改变单元格的格式为文本,或者用单引号作为单词'前缀,那么任何后续的单元格编辑,即使是无意的select,都会增加将其转换为实际date的风险。

这取决于你想要的细胞。 你想要一个string还是一个date?

如果你想要一个string:

  • 格式为文本或

  • 添加': CONCATENATE("'Apr ",$D$24)

如果你想要一个date:

  • 使用下面的公式代替连接: =DATE($D$24,4,1)

如果你只是复制粘贴它,只有值粘贴不格式化(如果我没有记错的话)

尽量避免使用Selection而不是使用Range

并使用Range.CopyRange.PasteSpecial Paste:=xlPasteFormats以便您的格式粘贴的值。