Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 复制时日期值会更改_Excel_Vba - Fatal编程技术网

Excel 复制时日期值会更改

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

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

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
将值粘贴到公式所在的相同单元格中。因此,格式相同,而且,您可以使用此方法绕过剪贴板