Excel 复制时日期值会更改
我有一个单元格,其中包含一个简单的连接函数,与前一年一样使用D24(例如15)和一个自定义格式(MMM JJ)Excel 复制时日期值会更改,excel,vba,Excel,Vba,我有一个单元格,其中包含一个简单的连接函数,与前一年一样使用D24(例如15)和一个自定义格式(MMM JJ) CONCATENATE(“Apr”,$D$24) 当我用VBA复制和粘贴这些单元格时,“Apr 15”变为“15.04.16”,因为格式为“Apr 16” Selection.Value=Selection.Value 这背后的原因是什么?除了将格式更改为文本,还有其他解决方案吗?如果您只是复制粘贴它,则只粘贴值,而不粘贴格式(如果我没记错的话) 尝试使用选择而不是使用范围 然后使用R
CONCATENATE(“Apr”,$D$24)
当我用VBA复制和粘贴这些单元格时,“Apr 15”变为“15.04.16”,因为格式为“Apr 16”
Selection.Value=Selection.Value
这背后的原因是什么?除了将格式更改为文本,还有其他解决方案吗?如果您只是复制粘贴它,则只粘贴值,而不粘贴格式(如果我没记错的话) 尝试使用
选择
而不是使用范围
然后使用
Range.Copy
和Range.PasteSpecial Paste:=xlPasteFormats
将格式与值一起粘贴。如果只是复制粘贴,则只粘贴值,而不粘贴格式(如果我没记错的话)
尝试使用选择
而不是使用范围
并使用
Range.Copy
和Range.PasteSpecial Paste:=xlPasteFormats
将格式与值一起粘贴。Excel通常会尝试将任何看起来像日期的内容转换为实际日期(序列号,其中1=1900年1月1日)。避免这种情况的一种方法是将其预格式化为文本,并像上面那样删除公式。因此:
With Selection
.NumberFormat = "@"
.Value = .Text
End With
也许你想做什么就做什么
还有其他方法,但如果您不将单元格格式更改为文本,或在条目前面加上一个引号,则对该单元格的任何后续编辑,即使是无意的选择,都会增加将其转换为真实日期的风险。Excel通常会尝试将任何看起来像日期的内容转换为真实日期(序列号,其中1=1900年1月1日)。避免这种情况的一种方法是预先格式化为文本,并按照上面的操作删除公式。因此:
With Selection
.NumberFormat = "@"
.Value = .Text
End With
也许你想做什么就做什么
还有其他方法,但如果您不将单元格格式更改为文本,或在条目前面加上一个引号
,
,则对该单元格的任何后续编辑,甚至是无意选择,都会增加将其转换为真实日期的风险。这取决于您在单元格中想要的内容。您想要字符串还是日期
如果需要字符串:
- 格式为文本或
- 添加一个“:
连接(“'Apr',$D$24)
- 使用以下公式代替串联:
=DATE($D$24,4,1)
- 格式为文本或
- 添加一个“:
连接(“'Apr',$D$24)
- 使用以下公式代替串联:
=DATE($D$24,4,1)
xlPasteAll
也会复制公式;而OP中的代码会删除公式。请尝试仅粘贴值。对不起,我误解了这个问题。在这种情况下,您可以使用xlPasteFormats。编辑了我的原始Commo。可能是我误解了,或者OP可能没有清楚地解释他想做什么。但请不要这样做不要忘了复制值;并测试使用方法时得到的结果。使用Selection.value=Selection.value
将值粘贴到公式所在的相同单元格中。因此,格式是相同的,而且,您可以使用此方法绕过剪贴板xlPasteAll
将复制t他还使用了公式;而OP中的代码删除了公式。请尝试仅粘贴值。很抱歉,我误解了问题。在这种情况下,您可以使用xlPasteFormats。编辑了我的原始Commo。可能是我误解了,或者OP可能没有清楚地解释他想要做什么。但不要忘记也复制值;一个d测试以查看使用方法时得到的结果。使用Selection.Value=Selection.Value
将值粘贴到公式所在的相同单元格中。因此,格式相同,而且,您可以使用此方法绕过剪贴板