
エクセルでVBAを用いてツールを作成しています。
結構な大作になると思ったので、コマンドボタンを多数配置し、それぞれ機能を分けて作成いたしました。
ツールが完成したので、それぞれのボタンを一つのボタンに集約しようと思っています。
しかし、コマンドボタンごとに同じ変数を何回も使用してしまったため、単純にカットペーストでは変数が被ってしまい、うまく動作させることができません。
また、いまから変数をすべて変更するとなると、非常に苦労する作業になってしまいます。
ボタンには順番があり、ボタン1→ボタン2→ボタン3と言うような順番で作動させないと上手く動作しない仕組みにもなっています。
そこで質問なのですが、変数を書き換えることなく、すべてのマクロを一つのボタンにて実行させることはできないでしょうか?
長くなりましたが、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こういうことでしょうか。
。。ボタンを10個(仮定)作成し、機能ごとに分けて作成したプログラムがあり
ボタン1~10まで順番に押していくと、全体作業が終了する作りになっていて、
1つのボタンを押すと1~10までのボタンを順番に押したのと同じ動きにしたい。。。のかな??
だとすると、多分今はUserForm1に
Private Sub CommandButton1_Click()
:
Private Sub CommandButton10_Click()
このように関数が並んでいると思われます。
プロジェクトエクスプローラで右クリックし
「挿入」→「標準モジュール」
挿入されたModule1をダブルクリックし、表示されたエディタにUserForm1の
プログラムをすべてコピー&ペースト
Module1の
Private Sub CommandButton1_Click()
の private を Public に
関数名称はややこしいので、適当な名前に変更
ここでは CommandButton1_Click を Func1 に変更とする。
で、UserForm1に戻って、コピーした元のプログラムはコメントアウトし
Private Sub CommandButton1_Click()
call Func1
:
Call Func10
End Sub
でいかがでしょうか?
No.3
- 回答日時:
既回答でも下記内容は、当然出ていると思うが、
各コマンドボタンクリックしたとき実行されるモジュールのコード部分を独立させて、モジュール名をそれぞれつけてモジュールにする。
1つ余分なモジュールを作り(下記Sub Test01())
実行する順序が決まっているらしいので、その順序にモジュール名を
並べて書けばよいだけの話では。
Sub Test01()
Module2
Module1
Module4
・・・
Sub End
ただ変数や引数の点でうまくいくか十分検証が必要。
うまくいかないときこそ、このコーナーの出番。
No.2
- 回答日時:
(1)それぞれのCommandButton_Clickを適当な名前に変える
(2)纏め用のCommandButtonを追加してそこから(1)で名前を変更したプロシージャーをCallする
CommandButton1~3があり、纏め用に追加したのがCommandButton4だとして
CommandButton1_Click → TanToKeisan
CommandButton2_Click → SitenKeisan
CommandButton3_Click → KaishaKeisan
と変更し、CommandButton4のClickイベントで
Sub CommandButton_Click()
Call TantoKeisan
Call SitenKeisan
Call KaishaKeisan
End Sub
このよういするということです。
また、わざわざそんな面倒なことをせずに以下のようにも出来ます。
Private Sub CommandButton4_Click()
Call CommandButton1_Click
Call CommandButton2_Click
Call CommandButton3_Click
End Sub
が、後々のことを考えるとプロシージャーの名前は
処理の内容が分かるような名前を付けた方がベターでしょう。
以上。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) 【ExcelVBA】動的にボタン、ボタン名を生成できますか? 7 2022/04/08 12:54
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
このQ&Aを見た人はこんなQ&Aも見ています
-
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
複数シートのボタンに同一の動作をさせたい
Excel(エクセル)
-
【Excel】複数のマクロをまとめることはできますか?
Excel(エクセル)
-
-
4
複数のコマンドボタン(VBAで)を一つにまとめたい。
Visual Basic(VBA)
-
5
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
6
マクロボタンを押すたびに違う動作をしたい
Excel(エクセル)
-
7
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
8
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
9
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
10
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
11
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
12
UserForm1.Showでエラーになります。
工学
-
13
VBAで重複データを合算したい
Excel(エクセル)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
VBAでセルをクリックする回数で表示が変わる
その他(プログラミング・Web制作)
-
16
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
17
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
18
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
19
プロシージャからイベントをコールする
Visual Basic(VBA)
-
20
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
ユーザーフォームに別シートか...
-
VBA ユーザーフォームラベルキ...
-
[VB.net] ボタン(Flat)のEnable...
-
ユーザフォーム AfterUpdate処...
-
visualC++6.0でボタン上にマウ...
-
押しっぱなしの処理
-
ボタンの表示を改行表示したい
-
コマンドボタンやイメージにマ...
-
閉じると「+」になり開くと「-...
-
VB.NETでマウスクリックイベン...
-
Excel マクロ 閉じるボタン
-
MFCでのボタン配置
-
VBA CommandButtonの文字ずれ
-
Access VBA でデータペーストを...
-
VB.NETのWebアプリで、ボタンの...
-
VB6でマルチスレッド?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
VBA CommandButtonの文字ずれ
-
Excel VBA Application.caller...
-
フォームの再読み込み
-
VB.net でトグルボタンを実現し...
-
Excel マクロ 閉じるボタン
-
[VB.net] ボタン(Flat)のEnable...
-
VBAのボタンの位置が変わって困...
-
プロシージャからイベントをコ...
-
閉じると「+」になり開くと「-...
-
ボタンをマウスで押し続けたと...
-
C#プログラムで、ボタンをショ...
-
VBAで多数のプログラムを一つの...
-
Access VBA でデータペーストを...
-
アイコンとボタンの違い
-
ボタン
おすすめ情報