![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
Excelマクロ初心者です。どうぞよろしくお願いいたします。
2つのシート(入力・出力)を作り、片方のシートに入力した値を、もう片方のシートにコピーペーストするというマクロを記録で作ったのですが、これをもっと少し簡単にしてほしいと言われ、いろいろ本を読んだり調べている所なのです。
For、Nextという式を使ってみる方法があるのは分かったのですが、コピペするのが行方向から列方向に、、もしくはセルが一つ飛ばしだったりと規則性が微妙で、結局どうしたらよいのかわからないです。
以下が記録のマクロで作成したマクロです。省略してますが、この4倍くらいの行が続きます。
どのように直せばもっと単純なマクロになるか、わかる方、申し訳ないですがよろしくお願いいたします。
Range("C3").Select
Selection.Copy
Sheets("出力").Select
Range("D3").Select
ActiveSheet.Paste
Sheets("入力").Select
Range("G3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("出力").Select
Range("D13").Select
ActiveSheet.Paste
Sheets("入力").Select
Range("K3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("出力").Select
Range("D23").Select
ActiveSheet.Paste
Sheets("入力").Select
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("出力").Select
Range("C5").Select
ActiveSheet.Paste
Sheets("入力").Select
Range("A5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("出力").Select
Range("E5").Select
ActiveSheet.Paste
Sheets("入力").Select
Range("A6").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("出力").Select
Range("G5").Select
ActiveSheet.Paste
Sheets("入力").Select
Range("A7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("出力").Select
Range("I5").Select
ActiveSheet.Paste
Sheets("入力セル").Select
Range("A8").Select
Application.CutCopyMode = False
No.1ベストアンサー
- 回答日時:
「簡単にしてほしい」と言った人は、VBAができる人ですか?もし、できる人なら、あなたに課題を出して試しているような気がします。
何故なら、この課題はVBAでマクロを作るにあたって、一番最初に理解しなければならないものだと考えているからです(私的にですが…)。Sheets("入力").Select
Range("C3").Select
Selection.Copy
Sheets("出力").Select
Range("D3").Select
ActiveSheet.Paste
Sheets("入力").Select
上記のVBAを日本語にすると次のようになります。
入力シートを選択する
選択したシートのC3セルを選択する
選択したセルをコピーする
出力シートを選択する
選択したシートのD3セルを選択する
選択したセルに先ほどコピーしたセルをペーストする
上記の日本語を整理すると次のようになります。
入力シートのC3セルをコピーする
出力シートのD3セルにコピーしたセルをペーストする
これをVBAで書き直すと次のようになります。
Sheets("入力").Range("C3").Copy
Sheets("出力").Paste (Sheets("出力").Range("D3"))
さらに、Copyメソッドのヘルプを読むと次のような書き方ができることに気づくはずです。
Sheets("入力").Range("C3").Copy (Sheets("出力").Range("D3"))
転記するセルに規則性が無いとのことなので、For~Nextでの対応はあまり意味がないと思いますが、上記の記述の簡素化だけでもわかりやすいコードになると思います。
ちなみに、Copy~Pasteでは書式なども一緒にコピーできますが、もし、値だけの転記で良いのであれば、次のような書き方が最適です。
Sheets("出力").Range("D3") = Sheets("入力").Range("C3")
丁寧なご回答いただきありがとうございます。
おかげさまで、プログラムを短く書き直すことができ、先ほど無事、動作しました。
(もともとのプログラムと違って一瞬で処理され、かなり感動しました。。)
本当にありがとうございました。
もっと勉強してみたいと思いました。
No.3
- 回答日時:
入力シートから出力シートへ値のみ入れるとのであれば
With Sheets("出力")
.Range("D3").Value=Range("C3").Value
.Range("D13").Value=Range("G3").Value
.Range("D23").Value=Range("K3").Value
・・・・
End With
と云った書き方がシンプルでPCの負担も少ないです。
丁寧なご回答いただきありがとうございます。
おかげさまで、プログラムを短く書き直すことができました。
本当にありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?a65a0e2)
No.2
- 回答日時:
不規則なセルのコピーなら、あなたが作成したマクロのように記述するしか方法はないでしょう。
1案として、別のシートにコピー元とコピー先のセルを記述しておき、その情報に従い、
コピーする方法が考えられますがいかがでしょうか。
添付の図の例では、
シート名(管理) に以下の情報を記入します。
A1にコピー元のシート名(=入力)
B1にコピー先のシート名(=出力)
A2にコピー元のセル名(C3)
B2にコピー元のセル名(D3)
A3にコピー元のセル名(G3)
B3にコピー元のセル名(D13)
・・・以下同様
マクロを実行するとA1に書かれたシート名(入力)の各セル(C3,G3,K3)を
B1に書かれたシート名(出力)の各セル(D3,D13,D23)にコピーします。
この情報を記述するシート名は”管理”とします。
![「EXCELマクロで、シート間でのコピーペ」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/106271_5870397b8ab04/M.png)
丁寧なご回答いただきありがとうございます。
このような方法もあるのですね。思いもよらない方法でした。
勉強させていただきます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
Excelマクロ 別シートへ連続コピペの方法
Excel(エクセル)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
繰り返し1行~28行までを順順にコピーする方法
Visual Basic(VBA)
-
6
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
7
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
8
VBAの構文 3列置きにコピーして別シートに貼付
Visual Basic(VBA)
-
9
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
10
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
11
複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ
Excel(エクセル)
-
12
マクロで最終行を取得してコピーしたい
Visual Basic(VBA)
-
13
マクロ自動コピペ 貼り付ける場所が変わる場合
その他(Microsoft Office)
-
14
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
15
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
16
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
17
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
18
エクセルVBA 作業後に選択範囲を解除する方法
Excel(エクセル)
-
19
エクセルVBA 別シートの複数のセルの値をコピーする方法
Excel(エクセル)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
別シートのセルを絶対参照にする
-
エクセルで条件に一致したセル...
-
Excelで複数シートの選択セルを...
-
日付が未入力の際はゼロか、空...
-
Excelシートの保護時にデータの...
-
Rangeメソッドは失敗しました。...
-
複数シートの同じセル内容を1シ...
-
エクセルで指定のセルのみ完全...
-
マクロ 新しいシートにデータ...
-
エクセルで1月0日と表示される!!
-
EXCELのハイパーリンクのセルを...
-
エクセルで、加筆修正したセル...
-
エクセルのセルに、マウスで選...
-
エクセルで20万行あるシート...
-
エクセルで特定の文字を打つと...
-
VBAで、セル(Range)のオブジ...
-
シート参照で変数を使いたい(EX...
-
エクセル ハイパーリンクで画像...
-
Excelでスクロールすると文字が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
別シートのセルを絶対参照にする
-
日付が未入力の際はゼロか、空...
-
Excelシートの保護時にデータの...
-
エクセルで1月0日と表示される!!
-
Rangeメソッドは失敗しました。...
-
ExcelでTODAY関数を更新させな...
-
エクセルで、加筆修正したセル...
-
複数シートの同じセル内容を1シ...
-
エクセルで指定のセルのみ完全...
-
エクセルで複写のように自動入...
-
Excelでスクロールすると文字が...
-
シート参照で変数を使いたい(EX...
-
マクロ 新しいシートにデータ...
-
Excelのファイル容量が減らない...
-
エクセルで20万行あるシート...
-
エクセルのルビがついたセルを...
-
エクセルの文字
おすすめ情報