如何防止Excel VBA粘贴特殊值从将数据类型从数字/日期更改为文本

时间:2017-01-27 20:53:29

标签: excel vba paste

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

在较高的层面上,我所拥有的流程如下:

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

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

  3. 依赖于粘贴数据的公式现在已被破坏,因为数据类型已更改为文本。

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

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

    是否有某种修饰符或覆盖PasteSpecial(xlPasteValues)会阻止Excel VBA更改数据类型?

    非常感谢您的任何帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用此

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

答案 1 :(得分:1)

您需要执行第二次粘贴命令以进行格式化:

cursig <- character()
for (i in sig) { #not 1:length(sig) thats always 1,2,3... in order
    cursig <- c(cursig, cur[i])
}
cursig
[1] "EUR" "GBP" "AUD" "CAD"

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