
エクセルで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
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
5
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
6
複数のコマンドボタン(VBAで)を一つにまとめたい。
Visual Basic(VBA)
-
7
マクロボタンを押すたびに違う動作をしたい
Excel(エクセル)
-
8
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
9
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
10
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
11
VBAでセルをクリックする回数で表示が変わる
その他(プログラミング・Web制作)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
マクロを複数シートに実行するには?
Excel(エクセル)
-
14
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
15
Excelのマクロでボタンを押すと数が1足されるようにするには?
IT・エンジニアリング
-
16
VBAコマンドボタンを押すたびに、データ取得させたい。
Visual Basic(VBA)
-
17
VBAで重複データを合算したい
Excel(エクセル)
-
18
エクセルVBA
Excel(エクセル)
-
19
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
20
ExcelのVBAでフォームが表示されない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA(エクセル)で自動的にボタン...
-
VBA CommandButtonの文字ずれ
-
VBAでオプションボタンによって...
-
Excel VBA Application.caller...
-
チェックボックスで指定出来る...
-
VBA シートのボタン名を変更し...
-
閉じると「+」になり開くと「-...
-
ボタンの状態
-
Excel マクロ 閉じるボタン
-
セルをマクロのボタンにしたい。
-
C♯初心者で、四則演算の電卓を...
-
SPREADコマンドボタン発生イベ...
-
VBの×ボタン
-
VBAのボタンの位置が変わって困...
-
フォームの再読み込み
-
button をクリックしてもへこま...
-
ボタンにセットフォーカスする...
-
vb.net タイマーに引数を渡す
-
ユーザーフォームに別シートか...
-
VB6でマルチスレッド?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
[VB.net] ボタン(Flat)のEnable...
-
コマンドボタンやイメージにマ...
-
VBAのボタンの位置が変わって困...
-
VB.net でトグルボタンを実現し...
-
フォームの再読み込み
-
閉じると「+」になり開くと「-...
-
アイコンとボタンの違い
-
ボタン
-
Access VBA でデータペーストを...
-
セルをマクロのボタンにしたい。
-
C#プログラムで、ボタンをショ...
-
ユーザーフォームに別シートか...
-
Excel マクロ 閉じるボタン
-
VBAで多数のプログラムを一つの...
-
ボタンをマウスで押し続けたと...
-
ASP.Net ラベルの内容をすぐに...
おすすめ情報