2017-03-08 11 views
0

マクロレコーダーを使用して生成したコードを取得しようとしています。私が使用しているスプレッドシートには、数値や日付のみを含む列がいくつかありますが、何らかの理由で一部の値がテキストとして格納されています。Excel VBA PasteSpecial with 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

完璧なソリューション!ありがとうございました! –

関連する問題