
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/11 11:47
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Visual Basic(VBA) VBA active sheetをPDF化して指定フォルダに保存 1 2022/07/07 11:27
- Visual Basic(VBA) このプログラムなんですがsheetにデータを置いて表示できるようにしてありますがsheetに101を 2 2023/02/23 20:13
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
このQ&Aを見た人はこんなQ&Aも見ています
-
別シートのマクロを実行する方法
Excel(エクセル)
-
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
-
4
エクセル マクロ 別シートから実行すると動かない
Excel(エクセル)
-
5
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
6
excel-vbaで作成したマクロを別シートから実行させたい
Visual Basic(VBA)
-
7
マクロを複数シートに実行するには?
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
10
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
11
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
12
Excel_マクロ_現在開いているシートにマクロを実行したいです
Visual Basic(VBA)
-
13
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
14
複数シートのボタンに同一の動作をさせたい
Excel(エクセル)
-
15
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
16
VBAを何回も作り直して、容量が増えた
Excel(エクセル)
-
17
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
Excel:コマンドボタンの移動
Excel(エクセル)
-
20
エクセルの、記録を終了したマクロに内容を追加したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
複数のマクロボタンをまとめて...
-
Excel マクロの編集がグレーに...
-
Excelのマクロでボタンを押すと...
-
エクセル ボタンに設定したマク...
-
エクセルの表を複数枚印刷した...
-
エクセルの、記録を終了したマ...
-
マクロの保存先を変更するには
-
(Excel VBA)シートコピー時マ...
-
エクセルマクロで、別のブック...
-
エクセル マクロ名にブック名...
-
excelのグラフをクリックして最...
-
個人用マクロのショートカット...
-
マクロ実行ボタンを自動削除したい
-
別シートのマクロボタンをマク...
-
エクセルで、「いいね」のよう...
-
他のBOOKにマクロを反映させな...
-
LDPlayerのマクロの編集方法を...
-
Excel 2013でマクロが正しく動...
-
エクセルでマクロ(Excel 4.0)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
エクセルでマクロ(Excel 4.0)...
-
エクセル マクロ名にブック名...
-
Excelのマクロでボタンを押すと...
-
Excelマクロで、稼働中のマクロ...
-
エクセルの、記録を終了したマ...
-
エクセルで、「いいね」のよう...
-
エクセルの表を複数枚印刷した...
-
エクセルマクロで、別のブック...
-
LDPlayerのマクロの編集方法を...
-
(Excel VBA)シートコピー時マ...
-
Excelのマクロ名の並び順の法則...
-
マクロをマクロを使ってコピー...
-
エクセルで明日の日付を表示す...
-
Excelマクロをバックグラウンド...
-
Ctrl+Zが使えない
-
マクロ実行ボタンを自動削除したい
おすすめ情報
説明不足ですみません。
基本のデータベースがあります。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を指定する方法などありますでしょうか。
よろしくお願いします。