2017-03-08 79 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

完美的解決方案!謝謝! –