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の負担も少ないです。
丁寧なご回答いただきありがとうございます。
おかげさまで、プログラムを短く書き直すことができました。
本当にありがとうございました。
No.2
- 回答日時:
不規則なセルのコピーなら、あなたが作成したマクロのように記述するしか方法はないでしょう。
1案として、別のシートにコピー元とコピー先のセルを記述しておき、その情報に従い、
コピーする方法が考えられますがいかがでしょうか。
添付の図の例では、
シート名(管理) に以下の情報を記入します。
A1にコピー元のシート名(=入力)
B1にコピー先のシート名(=出力)
A2にコピー元のセル名(C3)
B2にコピー元のセル名(D3)
A3にコピー元のセル名(G3)
B3にコピー元のセル名(D13)
・・・以下同様
マクロを実行するとA1に書かれたシート名(入力)の各セル(C3,G3,K3)を
B1に書かれたシート名(出力)の各セル(D3,D13,D23)にコピーします。
この情報を記述するシート名は”管理”とします。
丁寧なご回答いただきありがとうございます。
このような方法もあるのですね。思いもよらない方法でした。
勉強させていただきます。
本当にありがとうございました。
お探しの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を使って教えてください。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
Excelマクロ 別シートへ連続コピペの方法
Excel(エクセル)
-
複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ
Excel(エクセル)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
6
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
7
VBAの構文 3列置きにコピーして別シートに貼付
Visual Basic(VBA)
-
8
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
-
9
別のシートを参照して計算する方法
Visual Basic(VBA)
-
10
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
11
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
12
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
13
繰り返し1行~28行までを順順にコピーする方法
Visual Basic(VBA)
-
14
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
15
マクロについて 複数セルの値を別シートの任意のセルにコピー貼り付けしたい
Excel(エクセル)
-
16
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
17
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
18
エクセルの質問です。条件によってセルに斜線を引きたいのですが。
その他(OS)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
一行おきにコピーするマクロが知りたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで条件に一致したセル...
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
Rangeメソッドは失敗しました。...
-
エクセルで指定のセルのみ完全...
-
excelでハイパーリンクになって...
-
エクセルで複写のように自動入...
-
エクセルで、加筆修正したセル...
-
シート参照で変数を使いたい(EX...
-
セルの値と同じ名前のシートを...
-
Excelでスクロールすると文字が...
-
Excelシートの保護時にデータの...
-
ファイル起動時、毎回 シート1...
-
INDIRECT(空白や()がある文字列...
-
ExcelでTODAY関数を更新させな...
-
VBAで変数に関数式の結果をセッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
Excelで複数シートの選択セルを...
-
エクセルで1月0日と表示される!!
-
別シートのセルを絶対参照にする
-
エクセルで条件に一致したセル...
-
Excelシートの保護時にデータの...
-
Rangeメソッドは失敗しました。...
-
エクセルで別シートからの最大...
-
複数シートの同じセル内容を1シ...
-
エクセルで20万行あるシート...
-
エクセルで複写のように自動入...
-
エクセルの文字
-
VBAで変数に関数式の結果をセッ...
-
ExcelでTODAY関数を更新させな...
-
Excelでスクロールすると文字が...
-
エクセルで、加筆修正したセル...
-
Excelのファイル容量が減らない...
-
エクセルのルビがついたセルを...
-
シート参照で変数を使いたい(EX...
おすすめ情報