
No.4ベストアンサー
- 回答日時:
こんばんは
>Aマクロ・Bマクロともに標準モジュールにあります。
ということは
Sub Macro1()
'
' Macro1 Macro
'
'
〔処理〕
End Sub
Sub Macro2()
'
' Macro2 Macro
'
'
〔処理〕
End Sub
…と10シート分、あると言うことでしょうか?
一番ベタな方法として、Sheet11のボタンから以下のように各マクロをよびだすことができます。各シートのボタンを押さなくてもマクロから他のマクロを実行することが出来ます。
Sub all()
Call Macro1
Call Macro2
…
End Sub
余談ですが、"Call"は省略しても構いません。サンプルなので、マクロから他のマクロを呼び出しているというのをハッキリさせるためにあえて入れました。
No.6
- 回答日時:
こんばんは
テストとして、以下の手順を試してみてください
・エクセルを開く(ワークシートは3つで)
・名前を付けて保存
・Sheet1のA1に「abc」を入力
・Sheet2のA1に「def」を入力
・標準マクロを作成
・以下のマクロを標準モジュールに作成して実行
を試してみてください。
同じbook内ならば、他のワークシートの値を利用するのは簡単です。
Sub サンプル()
Worksheets(3).Range("A1") = Worksheets(1).Range("A1")
Worksheets(3).Range("A2") = Worksheets(2).Range("A1")
End Sub
何度も回答いただいてありがとうございます。
テストやってみました。こんな方法もあるんですね。勉強になりました。
教えていただいたCall Macro や皆さんの回答からマクロ作成してみます。
ありがとうございました。
No.5
- 回答日時:
昨日、しばらく読んで考えていましたが、あまり良い方向に行きませんね。
「Aマクロ」1-5、「Bマクロ」6-10ともに統一されたマクロとします。
これについては、キーワードがひとつ抜けているとすれば、フォーム・コントールのボタンという前提がなければ、話が頓挫してしまいます。これが、ActiveX のボタンだと変わってきます。
しかし、大変失礼ですが、統合したマクロはお書きになれないでしょうか。できていないから、ボタンを1つずつクリックして、コピーということをおっしゃっているのかもしれません。
もし、そういう要求だとしたら、後でコードはお書きしますが、マクロを専門に回答している者とっては、それは、あまりに嬉しなくないコードです。知っている人なら誰でもできるからです。
#3さんの所でもご指摘になっていますが、質問と答えが咬み合っていないのは、肝心な部分が書かれていないからです。以下のような、初級の内容ですが、この程度は質問の際に見せてほしいと思います。
実際は、データを直接、Sheet11に持っていく方法がありますが、内容としては、イレギュラーです。
ご質問者さんは、初心者といっても、一応まともな目的を持ったコードなら、分かる人はその内容を直そうとしてくれます。その内容を評価だけしたり、バカにしたりする人間は、本当は、マクロなど出来ない人だと思います。小出しに情報を出して、それを受けて答えるという方式では、一向に先に進みません。全部、さらけ出してしまいましょう。(^^;このレベルに仕事での守秘義務などはないでしょうから。
VBAの範疇では、私もみなさんも、ほとんど、みんな初心者と変わりません。10年やっていても、アルゴリズムのトレーニングもしていないし、ポインターがどうとか知っているわけではなく、単に、経験値の違いだけです。だた、回答者の中には、その経験値自体を否定するという輩もいますが、それでは破綻が見えてしまいます。
そういう中で、私が哀しいのは、基礎的な回答をしたのにも関わらず、全然、間違った回答が選ばれることですね。
'//
Sub TestMacro()
Dim i As Long
For i = 1 To 10
With Worksheets("Sheet" & i)
.Range("AA1").CurrentRegion.ClearContents
.Range("A1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Range("H1:H2"), _
CopyToRange:=.Range("AA1"), _
Unique:=False
Application.ScreenUpdating = False
With .Range("AA1").CurrentRegion
.Offset(1).Copy
Worksheets("Sheet11").Cells(Rows.Count, 1).End(xlUp).PasteSpecial
.ClearContents
End With
.Select
.Range("A1").Select
Application.ScreenUpdating = True
End With
Next i
Application.Goto Worksheets("Sheet11").Range("A1")
End Sub
'//
'*-----
Sub ButtonsExecute()
Dim i As Long
Dim myMacro
'フォームコントロール・ボタンが、シートに一個の場合
ThisWorkbook.Activate
For i = 1 To 5
Application.Run Worksheets("Sheet" & i).Buttons(1).OnAction '**
Next i
End Sub
'** ActiveX コントロールのボタンの場合は、Application.Runは不要です。
Worksheets("Sheet" & i).OLEObjects(1).Object.Value = True
解説:
Application.Run Worksheets("Sheet" & i).Buttons(1).OnAction '
これは、ボタンの呼び出しに登録しているマクロを呼び出すことで、もちろん、標準モジュールのマクロを、Call で直接呼び出して間違いなけば、それでも問題はありません。でも、ボタンに登録したマクロと標準モジュールにあるそのマクロとの整合性はありません。それは、限りなく間違いはないでしょうけれども、それなら、シートごとのボタンを実行するのではなく、最初からマクロの一本化を考えたほうがよいと思います。
余計なことを書いて、不愉快になりましたら、申し訳ありません。
いただいた回答を見て気づきましたが、初心者でなく超初心者でした。
作成していただいたマクロをゆっくりと理解していきたいと思います。
ありがとうございました。
No.3
- 回答日時:
前出のrukukuです。
最後の、「Sheet2」は誤記です。
本題です。
「Aマクロ」「Bマクロ」の置き場所はどこでしょうか?
各シートに置いてあると、先ほどの回答のようなことになります。
「標準モジュールに」に置いてあるのならば、どのシートのボタンからでも簡単に呼び出すことができます。
また、補足要求です。
ご質問の状況があいまい過ぎて、回答の方も一般論になってしまいます。
固有名詞や数値などは適当なダミーに置き換えても構いませんので、実際の使用方法をもう少し詳しく教えてください。
No.2
- 回答日時:
こんばんは
Application.Run
という命令を使えば可能です。
例えば、
Sheet1に
Sub Test()
MsgBox "test"
End Sub
Sheet2に
Sub RunTest()
Application.Run "Sheet1.Test"
End Sub
というマクロをつくった場合、Sheet2のRunTestを実行すれば、Sheet1のTestが実行されます。
Sheet2
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
別シートのマクロを実行する方法
Excel(エクセル)
-
エクセル マクロ 別シートから実行すると動かない
Excel(エクセル)
-
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
-
4
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
5
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
6
マクロを複数シートに実行するには?
Excel(エクセル)
-
7
複数シートのボタンに同一の動作をさせたい
Excel(エクセル)
-
8
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
9
Excel_マクロ_現在開いているシートにマクロを実行したいです
Visual Basic(VBA)
-
10
excel-vbaで作成したマクロを別シートから実行させたい
Visual Basic(VBA)
-
11
日付が未入力の際はゼロか、空白にしたい
その他(Microsoft Office)
-
12
特定のシートだけ印刷はマクロのボタンで実行
Excel(エクセル)
-
13
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
14
オプションボタンを別シートに連動
Excel(エクセル)
-
15
エクセルで可視セルにのみ値貼り付けをする方法があったら教えて下さい やりたいこととしては フィルター
Excel(エクセル)
-
16
マクロ1があります。 A1のセルをダブルクリックすると、 マクロ1が動くような仕組みを 作成したいの
その他(Microsoft Office)
-
17
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
18
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
19
エクセルで指定したセルのどれかに○がはいっていたら○を表示したいです。
その他(コンピューター・テクノロジー)
-
20
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルの、記録を終了したマ...
-
エクセル マクロ名にブック名...
-
複数のマクロボタンをまとめて...
-
別シートのマクロボタンをマク...
-
Excelマクロで、稼働中のマクロ...
-
Excelのマクロでボタンを押すと...
-
LDPlayerのマクロの編集方法を...
-
エクセルで、「いいね」のよう...
-
Excelで現在時刻を5分単位で自...
-
バッチファイルファイル→VBS→エ...
-
(Excel VBA)シートコピー時マ...
-
エクセルで明日の日付を表示す...
-
エクセルのマクロについて教え...
-
Excel:マクロを消す方法教えて...
-
エクセルで作られた?マクロを...
-
ルビ削除のマクロの仕様?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセルで、「いいね」のよう...
-
エクセルでマクロ(Excel 4.0)...
-
エクセル マクロ名にブック名...
-
エクセルの、記録を終了したマ...
-
エクセルの表を複数枚印刷した...
-
Excelマクロで、稼働中のマクロ...
-
(Excel VBA)シートコピー時マ...
-
エクセルマクロで、別のブック...
-
エクセルで明日の日付を表示す...
-
Excelマクロをバックグラウンド...
-
Excelのマクロ名の並び順の法則...
-
LDPlayerのマクロの編集方法を...
-
マクロ実行ボタンを自動削除したい
-
EXCELのマクロが他のパソコンで...
-
他のBOOKにマクロを反映させな...
おすすめ情報
説明不足ですみません。
基本のデータベースがあります。sheet1~sheet10にフィルタオプションで抽出されるように
マクロボタンでマクロの記録をしました。Aマクロ・Bマクロともに標準モジュールにあります。
抽出されたデータの合計値をsheet11に反映させているのですが、
sheet1~sheet10のマクロボタンをいちいち押さなくてもsheet11だけですべて行えるように
したいのです。
sheet11でボタンを作りマクロの記録をしてみました。
sheet1を選択しActiveにしてマクロボタンを押す。それをsheet10まで行いましたが
だめでした。
マクロ初心者ですのでFor~Nextを具体的に記入いただけると助かります。
補足します。
Aマクロ・Bマクロは共通で使用しているので
sheet1~sheet5には
Sub Macro1()
'
' Macro1 Macro
'
'
〔処理〕
End Sub
sheet6~sheet10には
Sub Macro2()
'
' Macro2 Macro
'
'
〔処理〕
End Sub
という感じです。
sheet1~sheet5、sheet6~sheet10 は同じフォーマットで作成しているので
同じマクロを適用しています。
Call を使うsheetを指定する方法などありますでしょうか。
よろしくお願いします。