如何防止Excel VBA粘贴特殊值,将数据types从数字/date更改为文本

我遇到一个问题,Excel VBA粘贴特殊值时将数据types更改为文本,当它执行粘贴值操作,然后打破下游公式,期望看到一个数字/date而不是文本。

在很高的层面上,我的过程如下:

  1. 从function工作表开始,复制并重命名它;

  2. 对新创build的工作表执行操作,包括复制,粘贴特殊值;

  3. 取决于粘贴数据的公式现在已经被破坏,因为数据types已经改变为文本。

正在执行复制粘贴特殊值的代码如下所示:

Workbooks("myFile.xlsm").Sheets(pageFocus).Range(refreshCopyRange).Copy Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial (xlPasteValues) 

是否有某种修改器或覆盖PasteSpecial(xlPasteValues),将停止Excel VBA更改数据types?

非常感谢您的帮助!

你可以使用这个

 .PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False 

您需要执行第二个用于格式化的粘贴命令:

 Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial xlPasteValues Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial xlPasteFormats 

这是一个示例:
https://social.msdn.microsoft.com/Forums/office/en-US/b593e52c-910c-4d24-b738-65878fe8a50d/how-to-copypaste-range-values-and-formats?forum=exceldev