- ベストアンサー
エクセルで値だけを移動することはできるでしょうか?
値のみを移動したいのですが、切り取りにして貼り付けると切り取った部分の書式が消える上に、貼り付けた部分に数式も入ってしまいます。 なのでコピーして形式を選択して貼付け、値にしているのですが、そうするとコピー元の値は残ってしまいます。 なのでコピー後コピー元の値をDELキーで消しているのですが、いちいちコピーした部分に戻って範囲指定して消すというのは面倒です。 値だけが移動できるという機能があればいいのですが、そういった機能はエクセルにあるのでしょうか? マクロでそういったことができないものかといろいろ試したりしてみたのですがうまくいきません。 バージョンは2000です。 ご存知の方いたらよろしくお願いします。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
#8です。 >コピー元と貼り付け先が重なってしまった場合、貼り付け先のデーターまでが消えてしまうんです。 確かにそうなってしまいますね、改良しました。 #6の改良版 Sub test() Dim mr As Range, c As Range If Selection.Areas.Count = 2 Then Set mr = Selection.Areas(1) mr.Copy Selection.Areas(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False With Selection For Each c In mr If c.Row < .Row Or c.Row >= .Row + .Rows.Count Then c.Value = "" ElseIf c.Column < .Column Or c.Column >= .Column + .Columns.Count Then c.Value = "" End If Next End With Else Beep End If End Sub #8のコードAの改良版 Public r As Range Sub test2() Dim c As Range If Application.CutCopyMode = xlCopy And TypeName(Selection) = "Range" Then ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False With Selection For Each c In r If c.Row < .Row Or c.Row >= .Row + .Rows.Count Then c.Value = "" ElseIf c.Column < .Column Or c.Column >= .Column + .Columns.Count Then c.Value = "" End If Next End With Set r = Selection Else Beep End If End Sub なお、Public r As Range の部分は、必ずモジュールのウィンドウ中の一番上にコピーしてください。
その他の回答 (11)
ちょっと質問の意味がわかりません。 >コピーして形式を選択して貼付け、値にしているのですが、そうする とコピー元の値は残ってしまいます。 >値だけが移動できるという機能があればいいのですが、 コピー元の値が残ってしまうと言いつつ、値だけを移動したいとおっしゃる・・・。 「値のみ」というのは表面上の数字だけを移動するということです。タイトルからすると形式を選択して貼り付けする方法でよいのですが、最終的にどのようにされたいのですかね?
- 1
- 2
補足
すいません、ちょっとややこしい言い方になってしまったかもしれません。 コピー元の値は消したいんです。 そうなると切り取り貼付けになりますが、そうすると書いたような不都合が出てしまうわけです。