プロが教える店舗&オフィスのセキュリティ対策術

Excel2003を使用しています。

Sheet1のE41:E54までをSheet2のアクティブセルに値のみコピーするコードを書きたいのですが、ただ“コピー”するだけなら書けたのですが、“値のみコピー”の書き方がわかりません。

もしよろしければ、“値のみコピー”の部分のコードだけでなく、全体を書いていただけると、マクロ勉強中ですので、参考になります。
よろしくお願いします!

A 回答 (5件)

こんにちは。



値コピーの場合は、難しいメソッドを使う必要はありませんね。
本来は、単に、.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
    • good
    • 2
この回答へのお礼

Wendy02 さん、こんにちは。

>値コピーの場合は、難しいメソッドを使う必要はありませんね。
本来は、単に、.Value = .Value です。

Wendy02 さんの書かれたコードは随分すっきりしていますね。
私は、Sheet1を選択→E41:E54を選択してコピー、Sheet2を選択→アクティブセルを選択して貼り付け…とたて続けに Select がありますが、コピー元とコピー先が別のSheetなので、ある程度仕方がないのかなと思っていました。。。

大変参考になりました。ありがとうございました。

お礼日時:2007/02/05 16:11

#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

副産物として、いくつシートがあっても、どのシートからでも、アクティブにしたセルに貼り付けます。
    • good
    • 2
この回答へのお礼

再度の回答ありがとうございます。

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

そのとおりです。
教えていただいたコードでも、うまくいきました。
ありがとうございました。

お礼日時:2007/02/06 10:27

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にしました。)
なお、「新しいマクロの記録」で記録されるマクロには、省略可能なデフォルトまでバカ丁寧に記録されます。
そんなデフォルトは消すとスッキリします。


> こちらに質問させていただく前に、「新しいマクロの記録」を利用してやってみたのですが、エラーが出てしまったので…

であれば、話が早いです。
「マクロ勉強中」であるならなおさら、そのソースやエラーを提示して、
何でエラーなのか、どうすべきか、聞いたほうが勉強になります。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

>「新しいマクロの記録」で記録されるマクロには、省略可能なデフォルトまでバカ丁寧に記録されます。
そんなデフォルトは消すとスッキリします。

そうなんですね、知りませんでした(^_^;)
ということは、値のみコピーは“Selection.PasteSpecial Paste:=xlValues”の部分ということですか。。。

あと、コピー先のアクティブセルですが、ある表の一部に値のみ貼り付けるマクロで、このマクロを実行するたびに貼り付けるセルの位置が変わるので、『Sheet2のアクティブセルに…』と書いています。

お礼日時:2007/02/05 16:25

ある範囲を選択して、別シートに貼り付けた際の貼り付け方の違い、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
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

>A1には値貼り付け、C1にはすべて貼り付けを行いました。
マクロを作成して、そう言う違いを見るのも勉強になりますよ。

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

お礼日時:2007/02/05 15:42

わからない部分は「新しいマクロの記録」で、実際に作業を行い、記録されたマクロを利用すれば効率よく書けますよ。



Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,SkipBlanks:=False, Transpose:=False
    • good
    • 0
この回答へのお礼

>わからない部分は「新しいマクロの記録」で、実際に作業を行い、記録されたマクロを利用すれば効率よく書けますよ。

こちらに質問させていただく前に、「新しいマクロの記録」を利用してやってみたのですが、エラーが出てしまったので…
回答ありがとうございました。

お礼日時:2007/02/05 15:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!