
エクセルで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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
複数シートのボタンに同一の動作をさせたい
Excel(エクセル)
-
【Excel】複数のマクロをまとめることはできますか?
Excel(エクセル)
-
-
4
複数のコマンドボタン(VBAで)を一つにまとめたい。
Visual Basic(VBA)
-
5
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
6
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
7
マクロボタンを押すたびに違う動作をしたい
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
10
VBAで重複データを合算したい
Excel(エクセル)
-
11
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
12
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
13
VBAでセルをクリックする回数で表示が変わる
その他(プログラミング・Web制作)
-
14
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
15
プロシージャからイベントをコールする
Visual Basic(VBA)
-
16
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
17
作ったマクロを複数のシートで実行できるようにしたい。
Excel(エクセル)
-
18
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
19
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
20
コマンドボタンをクリックでシートからシートに移動させたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
ボタンをマウスで押し続けたと...
-
[VB.net] ボタン(Flat)のEnable...
-
DO~LOOP でのLOOP...
-
Excel VBA実行中にワークシート...
-
マクロについて質問です。 セル...
-
VBA ユーザーフォームラベルキ...
-
コマンドボタンやイメージにマ...
-
VBA CommandButtonの文字ずれ
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
VBAでオプションボタンによって...
-
VBA IE ダウンロード ダイアロ...
-
見えないボタンを作って、押さ...
-
文字列を送るには…
-
【VC++2005(CLR)】動的にパネル...
-
VBAからIE操作 .document.forms...
-
フォームの再読み込み
-
VBA MsgBoxで、”いいえ(No)”ボ...
-
フォームのアイコンが行方不明...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
C#プログラムで、ボタンをショ...
-
BorlandC++Builderでのタイマー...
-
[VB.net] ボタン(Flat)のEnable...
-
フォームの再読み込み
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
Access VBA でデータペーストを...
-
C#でSendInputを使ったサンプル...
-
バックスペース機能の作り方
-
アイコンとボタンの違い
-
セルをマクロのボタンにしたい。
-
Excel マクロ 閉じるボタン
-
VBAのボタンの位置が変わって困...
おすすめ情報