Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 : Excel 2013)
マクロの合体?
投稿日時: 20/01/24 09:06:45
投稿者: ppp87654321ppp

1/8にマクロの作成で投稿させていただき解決しましたが、今回は二つのマクロを一つにしたいと思っています。
AとBのマクロをボタン一つで同時にそれぞれのシートにコピーするというものです。
作成したマクロは二つでAとB同じものです。これを一緒に出来るでしょうか?
初心者なので言葉など理解ができないことが多くわかりやすく説明していただけるとありがたいです。
よろしくお願いいたします。
 
Sub A転送()
'
' A転送 Macro
' Aシートにデータをコピーする
'
 
'
    Range("B10:F12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("A").Select
    Cells(Rows.Count, "B").End(xlUp).Offset(1).Select '
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

回答
投稿日時: 20/01/24 10:07:23
投稿者: WinArrow
投稿者のウェブサイトに移動

>にそれぞれのシートに
 と書かれてるので
AとBで全く同じではないと思います。
  
掲示のマクロは、操作対象がアクティブシートとなっています。
ですから、転送元シート(名前不明)が アクティブになっているという前提で書かれています。
このコード実行後は、Aシートが アクティブになったままですから、
転送元シートに切替えないと、お望みのBシートへの転記は、できません。
 
というようなことを回避するために、
(1)アクティブシートを意識しないでも可能なコードにするか
(2)必ず、シートを指定して実行するコードにするか
 で、対応が異なります。
  
前者の場合、コードの手直しが必要です。
後者の場合は、別のマクロを作成し、そのマクロから、
転送先シードを指定して現在のプロシジャを呼び出す形が
簡単かと思います。
  
 
なお、シートをアクティブにしたり、セルをSELECTするなどは、レスポンスが悪くなることから
シートやセルをSELECTしない方法が、一般的です。
少しハードルが高いっかも?
 
 今後のためにも前者は役に立ちます。・・・・勉強する必要があります。
 

投稿日時: 20/01/24 10:32:36
投稿者: ppp87654321ppp

ありがとうございました。何を勉強するかの指針になりました。