2017-03-08 437 views
0

我试图让我使用宏记录器生成的代码工作。我使用的电子表格有一些只能包含数字或日期的列,但由于某些原因,其中一些值存储为文本。Excel VBA PasteSpecial与xlPasteSpecialOperationAdd不起作用

为了解决这个问题,我决定复制并粘贴将0添加到所有这些单元格中。如果我手工做,它可以正常工作。所以,我开始使用Excel宏记录器来获取代码。我对所生成的代码做了一些修改,只是为了使它更易读和干净,但实际上,也不是原代码,也不是我的版本。

的代码如下:

Range("F1").Value = 0 
Range("F1").Copy 
Set rngPaste = Range(Range("D3:E3"), Range("D3:E3").End(xlDown)) 
rngPaste.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd, 
              _ SkipBlanks:=False, Transpose:=False 
Set rngPaste = Range(Range("G3:J3"), Range("G3:J3").End(xlDown)) 
rngPaste.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd, 
              _ SkipBlanks:=False, Transpose:=False 
Application.CutCopyMode = False 

任何想法,为什么这是不工作?

在此先感谢!

+1

你能描述一下当你运行上面的代码会发生什么?你是什​​么意思,它不起作用?你可以添加你修改之前录制的内容吗? – Mike

+0

你说“一些存储为文本的值”,那么为什么不选择全部并将它们设置为默认值或数字? –

+0

@Mike它应该将文本中存储的日期和数字更改为正确的类型。 –

回答

0

而是添加零试试这个(它的工作对我的测试)

With Range(Range("D3:E3"), Range("D3:E3").End(xlDown)) 
    .Value = .Value2 
End With 
With Range(Range("G3:J3"), Range("G3:J3").End(xlDown)) 
    .Value = .Value2 
End With 
+0

完美的解决方案!谢谢! –