• ベストアンサー

Excel VBA のコピーについて

Range(Cells(7, 42), Cells(61, 79)).Select Selection.Cut Destination:=Range("B7") このような形で値をコピーしたいのですが、 その際、コピーされる方のRange("B7")の書式を そのまま生かしたい場合はどのような設定をすればよろしいのでしょうか? windows2000でexcel2000になります。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 こんな風に配列変数を使えばよいと思います。 Sub CutValues() Dim myValue As Variant With Range(Cells(7, 42), Cells(61, 79))  myValue = .Value  .ClearContents Range("B7").Resize(.Rows.Count, .Columns.Count) = myValue End With End Sub PasteSpecial を使うなら、空打ち(領域にValueデータがないこと)を予想しなくてはならないので、エラートラップが必要ではないでしょうか? With Range(Cells(7, 42), Cells(61, 79))   .Copy On Error Resume Next  Range("B7").PasteSpecial Paste:=xlValues  .ClearContents '貼り付け前には出来ません。 End With ただし、こちらは、コピー領域と、ペースト領域で重なる場合は、コピー領域が削除されてしまうので、ペースト領域の一部が欠ける可能性がありますね。

riseshinejp
質問者

お礼

ありがとうございます。 やっとできました。 変数を使うなどぜんぜん頭になかったので とても参考になりました。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

#1です。 --- Range(Cells(7, 42), Cells(61, 79)).Copy Range("B7").Select Selection.PasteSpecial Paste:=xlValues --- もしくは --- Range(Cells(7, 42), Cells(61, 79)).Copy Range("B7").PasteSpecial Paste:=xlValues --- にしてみて下さい。

riseshinejp
質問者

お礼

ありがとうございます。 おかげさまでやっとできました。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

質問のマクロだと切り取り→貼り付けになっています。 コピーにすれば質問のとおり値のみの貼り付けができます。 --- Selection.PasteSpecial Paste:=xlValues

riseshinejp
質問者

補足

ありがとうございます。 ご指摘のとおり以下のように修正してみたのですが、 なぜかSelection.PasteSpecial Paste:=xlValuesのところでエラーになってしまいます。 なにか間違ってますでしょうか?

関連するQ&A