• ベストアンサー

【Excel】値のみコピーのコードの書き方

Excel2003を使用しています。 Sheet1のE41:E54までをSheet2のアクティブセルに値のみコピーするコードを書きたいのですが、ただ“コピー”するだけなら書けたのですが、“値のみコピー”の書き方がわかりません。 もしよろしければ、“値のみコピー”の部分のコードだけでなく、全体を書いていただけると、マクロ勉強中ですので、参考になります。 よろしくお願いします!

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

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

こんにちは。 値コピーの場合は、難しいメソッドを使う必要はありませんね。 本来は、単に、.Value = .Value です。しかし、ActiveCell があるので、その方法がややこしくなるだけです。 Sub ValuesCopy() If ActiveCell.Parent.Name = "Sheet2" Then With Worksheets("Sheet1").Range("E41:E54")   ActiveCell.Resize(.Rows.Count, .Columns.Count).Value = .Value End With End If End Sub

rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 >値コピーの場合は、難しいメソッドを使う必要はありませんね。 本来は、単に、.Value = .Value です。 Wendy02 さんの書かれたコードは随分すっきりしていますね。 私は、Sheet1を選択→E41:E54を選択してコピー、Sheet2を選択→アクティブセルを選択して貼り付け…とたて続けに Select がありますが、コピー元とコピー先が別のSheetなので、ある程度仕方がないのかなと思っていました。。。 大変参考になりました。ありがとうございました。

その他の回答 (4)

回答No.5

#4です。 操作が分らなかった。(^^ゞ Sheet2のあるセルをアクティブしてマクロを実行したら、 Sheet1のE41:E54までの値のみを、Sheet2のそのセルから貼り付けたい。 ということでしょうか? 例えば、今回はG9から、その次はJ3からと、いろいろ変わる。と理解してよろしいのですね。 であれば、マクロを訂正します。 Sub Macro3()   Dim SEL As String   SEL = ActiveCell.Address   Sheets("Sheet1").Range("E41:E54").Copy   Range(SEL).PasteSpecial Paste:=xlValues End Sub 副産物として、いくつシートがあっても、どのシートからでも、アクティブにしたセルに貼り付けます。

rx-z5815
質問者

お礼

再度の回答ありがとうございます。 >Sheet2のあるセルをアクティブしてマクロを実行したら、 Sheet1のE41:E54までの値のみを、Sheet2のそのセルから貼り付けたい。 ということでしょうか? 例えば、今回はG9から、その次はJ3からと、いろいろ変わる。と理解してよろしいのですね。 そのとおりです。 教えていただいたコードでも、うまくいきました。 ありがとうございました。

回答No.4

Sub Macro3()   Range("E41:E54").Select   Selection.Copy   Sheets("Sheet2").Select   Range("A1").Select   Selection.PasteSpecial Paste:=xlValues End Sub Sheet1のE41:E54までを Sheet2のアクティブセル(A1にしました。) なお、「新しいマクロの記録」で記録されるマクロには、省略可能なデフォルトまでバカ丁寧に記録されます。 そんなデフォルトは消すとスッキリします。 > こちらに質問させていただく前に、「新しいマクロの記録」を利用してやってみたのですが、エラーが出てしまったので… であれば、話が早いです。 「マクロ勉強中」であるならなおさら、そのソースやエラーを提示して、 何でエラーなのか、どうすべきか、聞いたほうが勉強になります。

rx-z5815
質問者

お礼

回答ありがとうございます。 >「新しいマクロの記録」で記録されるマクロには、省略可能なデフォルトまでバカ丁寧に記録されます。 そんなデフォルトは消すとスッキリします。 そうなんですね、知りませんでした(^_^;) ということは、値のみコピーは“Selection.PasteSpecial Paste:=xlValues”の部分ということですか。。。 あと、コピー先のアクティブセルですが、ある表の一部に値のみ貼り付けるマクロで、このマクロを実行するたびに貼り付けるセルの位置が変わるので、『Sheet2のアクティブセルに…』と書いています。

  • ysko614
  • ベストアンサー率31% (103/329)
回答No.2

ある範囲を選択して、別シートに貼り付けた際の貼り付け方の違い、A1には値貼り付け、C1にはすべて貼り付けを行いました。 マクロを作成して、そう言う違いを見るのも勉強になりますよ。 Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("C1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False

rx-z5815
質問者

お礼

回答ありがとうございます。 >A1には値貼り付け、C1にはすべて貼り付けを行いました。 マクロを作成して、そう言う違いを見るのも勉強になりますよ。 こちらで質問させていただく前に、「新しいマクロの記録」を利用して、値のみ貼り付けとすべて貼り付けの両方を作成して、違いも見てみたのですが、エラーが出てしまいまして… どこか別のところに間違いがあるのかもしれないと思い、質問させていただきました。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

わからない部分は「新しいマクロの記録」で、実際に作業を行い、記録されたマクロを利用すれば効率よく書けますよ。 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,SkipBlanks:=False, Transpose:=False

rx-z5815
質問者

お礼

>わからない部分は「新しいマクロの記録」で、実際に作業を行い、記録されたマクロを利用すれば効率よく書けますよ。 こちらに質問させていただく前に、「新しいマクロの記録」を利用してやってみたのですが、エラーが出てしまったので… 回答ありがとうございました。

関連するQ&A

専門家に質問してみよう