- ベストアンサー
【Excel】値のみコピーのコードの書き方
- みんなの回答 (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
その他の回答 (4)
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
#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 副産物として、いくつシートがあっても、どのシートからでも、アクティブにしたセルに貼り付けます。
お礼
再度の回答ありがとうございます。 >Sheet2のあるセルをアクティブしてマクロを実行したら、 Sheet1のE41:E54までの値のみを、Sheet2のそのセルから貼り付けたい。 ということでしょうか? 例えば、今回はG9から、その次はJ3からと、いろいろ変わる。と理解してよろしいのですね。 そのとおりです。 教えていただいたコードでも、うまくいきました。 ありがとうございました。
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
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にしました。) なお、「新しいマクロの記録」で記録されるマクロには、省略可能なデフォルトまでバカ丁寧に記録されます。 そんなデフォルトは消すとスッキリします。 > こちらに質問させていただく前に、「新しいマクロの記録」を利用してやってみたのですが、エラーが出てしまったので… であれば、話が早いです。 「マクロ勉強中」であるならなおさら、そのソースやエラーを提示して、 何でエラーなのか、どうすべきか、聞いたほうが勉強になります。
お礼
回答ありがとうございます。 >「新しいマクロの記録」で記録されるマクロには、省略可能なデフォルトまでバカ丁寧に記録されます。 そんなデフォルトは消すとスッキリします。 そうなんですね、知りませんでした(^_^;) ということは、値のみコピーは“Selection.PasteSpecial Paste:=xlValues”の部分ということですか。。。 あと、コピー先のアクティブセルですが、ある表の一部に値のみ貼り付けるマクロで、このマクロを実行するたびに貼り付けるセルの位置が変わるので、『Sheet2のアクティブセルに…』と書いています。
- ysko614
- ベストアンサー率31% (103/329)
ある範囲を選択して、別シートに貼り付けた際の貼り付け方の違い、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
お礼
回答ありがとうございます。 >A1には値貼り付け、C1にはすべて貼り付けを行いました。 マクロを作成して、そう言う違いを見るのも勉強になりますよ。 こちらで質問させていただく前に、「新しいマクロの記録」を利用して、値のみ貼り付けとすべて貼り付けの両方を作成して、違いも見てみたのですが、エラーが出てしまいまして… どこか別のところに間違いがあるのかもしれないと思い、質問させていただきました。
- driverII
- ベストアンサー率27% (248/913)
わからない部分は「新しいマクロの記録」で、実際に作業を行い、記録されたマクロを利用すれば効率よく書けますよ。 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,SkipBlanks:=False, Transpose:=False
お礼
>わからない部分は「新しいマクロの記録」で、実際に作業を行い、記録されたマクロを利用すれば効率よく書けますよ。 こちらに質問させていただく前に、「新しいマクロの記録」を利用してやってみたのですが、エラーが出てしまったので… 回答ありがとうございました。
関連するQ&A
- 【Excel VBA】コードの整理
Excel2003を使用しています。 仕事で使用しているコードが増えてきたので、コードばかりを集めたファイルのようなものを作って、整理したいと思うのですが、何か良い方法やおすすめの方法はあるでしょうか? マクロ勉強中で、以前書いたコードを参考にすることも多いので、検索もしやすいようにできればと思っています。 アドバイスよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【Excel VBA】ループについて
Excel2003を使用しています。 2つのBook間でのループはできるのでしょうか? 下記のようにBook1のデータをBook2へ値のみコピーしたいのですが。。。 Book1のSheet1 Book2のSheet1 T7:T23 L19 U7:U23 L59 V7:V23 L99 : : : : AM7:AM23 L779 マクロ勉強中ですので、まず、マクロの記録をとってみたのですが、同じ処理の繰り返しなので、ループかな?と思い、参考書や似たような処理のコードを見たりしながら、あれこれ考えていたら、頭が混乱してきてしまいました(>_<) 2つのBook間では難しい(面倒)ならば、同じBookに変更することも考えています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【Excel】2つのBook間のマクロ
Excel2003を使用しています。 BookAのSheet1とSheet2のある範囲をそれぞれBookBのSheet1とSheet2に値のみコピーするというマクロを作成しようとしています。 (1)Sheet1を値のみコピーするコード を書いて (2)Sheet2を値のみコピーするコード を書こうと思っていたのですが、(1)から(2)へどのように続けて書いたらいいでしょうか? (1)のコードは Sheets("Sheet1").Range("A1:G30").Select Selection.Copy Workbooks.Open Filename:="A:\B.xls" Sheets("Sheet1").Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False と書いています。 また、こういう場合は、BookAとBookBのどちら側にコードを書いた方がいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- 【Excel VBA】データ貼り付け先のシート名選択
Excel2003を使用しています。 あるシートの選択部分を別のシートに値のみコピーするという作業をマクロで処理したく、コードを書きました。 コピー元のシートは毎回同じなのですが、貼り付け先のシートは、都度選択するようにしたいので、InputBox にシート名を入力して選択する方法にしていますが、これをシート名リストから選択するようにすることは可能でしょうか? 可能であれば、その方法を教えていただきたいのですが。。。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【Excel VBA】セルに入力されている値と同じ名前のシートにデータをコピーする
Excel2003を使用しています。 Sheet1のC2セル以下に入力されている値と同じ名前のシートに、その行のデータをコピーする作業をマクロで処理したいのですが、セルに入力されている値と同じ名前のシートを取得する方法がわかりません。 どのようにコードを書いたらいいのでしょうか? ちなみに、Sheet1のC2セル以下に入力されている値(=シート名)は、文字列(4桁の数字)です。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel2003で動いたマクロがExcel2007で動作しなくなる
マクロの動作確認をしているのですが、Excel2003では動いていたマクロがExcel2007では動かず、エラーが出てしまいます。 一週間程前からvbaはvbに似ているということで、vbの参考書片手にマクロを動かしている、マクロ作成初心者です。 マクロの動作確認をしているのですが、 Excel2003で動いていたマクロがExcel2007ではエラーが出てしまいます。 まず初めに、Excel2007では LineWeight = .Line.Weight / 0.75 という部分にエラーが出て(エラー番号は6で、調べてみるとオーバーフーローとのことです) .Line.Weightに-2.147484E+0.9という値が入っています。 Excel2003では.Line.Weightに0.75とか1または2という値が入っていました。 (どちらもWith~End With間に書かれています。) そこでお聞きしたいのですが、.Line.Weightというのはオブジェクトから線幅の値を取得する関数なのでしょうか? それともどこかで値を設定しているのでしょうか?-2.147484E+0.9という値を設定しているとは考えにくいもので… 2003と2007の互換性についても調べたのですが、2007でも2003のマクロは動作するとの旨が多く、 ハッキリどこがダメとも書いてないので分からずとても困っております。 乱文で申し訳ないです。どなたかお教え下さい。
- 締切済み
- オフィス系ソフト
- エクセルのマクロ(値を検索して別シートにコピー)
エクセルで下記のマクロをご教示いただけるでしょうか。 1.Sheet1のアクティブセルの右に5つ、下に1つのセルを起点として下方向に6セル分をコピー (例)Sheet1のアクティブセルがA2だとすると、F3~F8をコピー 2.Sheet1のアクティブセルの値(yy/mm/dd形式の日付)と同じ値のセルをSheet2のA列から検索し、該当セルの右に2つ分のセルに行列を入れ替えて値のみをペースト (例)Sheet1のアクティブセル(A2)の値がSheet2のA4セルにあるとすると、Sheet2のC4に行列を入れ替えて値のみペースト 3.Sheet1のアクティブセルの値がSheet2のA列に2つ以上あれば、「同じ日付が複数あります。」というメッセージを表示
- ベストアンサー
- Visual Basic
- アクティブセル以下をコピーするマクロの設定の仕方が分かりません。Excel2000です。
アクティブセル以下をコピーするマクロの設定の仕方が分かりません。Excel2000です。 B列(B3:B402)のどのセルをアクティブにした場合でも、"アクティブセルをそれ以下のセル全て(B402まで)に オートフィルでコピーする"マクロを設定したいのですが、 自動記録だとアクティブセルはセル番号で記載されてしまうため、応用が利きません(というか分かりません)いずれかのセルをアクティブにし、コマンドボタンを押すと それ以下のセルにコピーされるという流れです。 私なりに調べてみましたが分かりません。 どなたかご教示願えませんでしょうか?
- ベストアンサー
- オフィス系ソフト
- アクティブセルとそのセルに隣接する右隣の2つのセルをコピーしてシート2に貼り付ける
「アクティブセルとそのセルに隣接する右隣の2つのセルをコピーしてシート2に貼り付ける」というVBAコードが知りたいです。 「アクティブセルをシート2に貼り付ける」だけなら Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste はわかるのですが、 「アクティブセルとそのセルに隣接する右隣の2つのセルをコピー」がわかりません。 例えて言うなら A1がアクティブならA1からC1までコピーして シート2の(C3がアクティブなら)C3からE3に貼り付けたいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
Wendy02 さん、こんにちは。 >値コピーの場合は、難しいメソッドを使う必要はありませんね。 本来は、単に、.Value = .Value です。 Wendy02 さんの書かれたコードは随分すっきりしていますね。 私は、Sheet1を選択→E41:E54を選択してコピー、Sheet2を選択→アクティブセルを選択して貼り付け…とたて続けに Select がありますが、コピー元とコピー先が別のSheetなので、ある程度仕方がないのかなと思っていました。。。 大変参考になりました。ありがとうございました。