• ベストアンサー

Private Subについて

VB初心者ですが質問させていただきます。 現在 Private Sub CommandButton1_Click() で呼び出されている処理を、 コマンドラインからstart~.exeと入力して呼び出される(実行される)ようにするにはPrivate Subにてどのように記載してexeファイルを作成すればよいでしょうか?? 何分初心者な者ですので概念に間違いがありましたら申し訳ございません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>Sub Main() >Call Command1_Click >End Sub >とか出来なかったっけ? できるはずがない。 Privateの範囲を考えればわかるはず Public Sub Command1_Click() にして sub min側で Call Form1.Command1_Click 呼び出せば動かないことはないけどイレギュラー的な 使い方すぎる。 それ考えれば Command1_Clickイベント内をサブルーチン(関数化)して それをsub mainとCommand1_Clickイベントから 呼び出して使うのが本来でしょう。

wf3255
質問者

お礼

論理的/具体的なご回答ありがとうございます。 解決いたしました。

その他の回答 (2)

noname#221739
noname#221739
回答No.2

VB.NETでも通用する (=Option Strict On、Option Explicit On制約を付ける) 考え方をするならば… 1 CommandButton1_Click() の中で行なっている処理を、別のメソッドにまとめる。 2 Main()、および CommandButton1_Click() から、1で作成したメソッドを呼ぶようにする …というのは、いかがでしょう?

wf3255
質問者

お礼

参考意見ありがとうございます。 自分でも色々とためしてみます。 貴重なご意見ありがとうございました。

回答No.1

Sub Main() Call Command1_Click End Sub とか出来なかったっけ?

wf3255
質問者

補足

試してみましたが、コンパイルエラー "SubまたはFunctionが定義されていません" と表示されます。 自分でも色々と試してみたいと思います。

関連するQ&A

  • Private Sub内でSubをCallしたい

    Excel 2007でVBAを組もうとしています。 ユーザーフォームのコマンドボタンをクリックすると動く処理を Private Sub 内に書きましたが、処理が長くなりましたので、 Subに分けたいと思います。 Private subからSubプロシージャをCallすることはできますか? またどのSubでも同じ変数を使う場合、定義は、各Sub内で 毎回行う必要がありますか? 引数渡しのところがよく分からないので、すみませんが よろしくお願い致します。

  • Sub ***( ) と Private Sub ***( ) の違い

    初歩的な質問で申し訳ありませんが・・・ 自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。 ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。 Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか? どなたか説明頂けませんか? よろしくお願いします。

  • [Excel VBA]コマンドボタンの入力待ち方法

    コマンドボタンの入力を待つ方法についてご教示願います、 以下に詳しい状況と、具体的な質問を記載します。 【構成】 ・ユーザーフォーム上に5つのコマンドボタン(CommandButton1~CommandButton5) 【やりたいこと】 ・CommandButton1を押したらスタート ・1ラウンドにつき1回、CommandButton2~CommandButton5のいずれかのボタンが押せる。  そして、押されたボタンが何かを毎ラウンド判定する。  これを10ラウンドまで繰り返す。 (つまり、どのボタンが押されたかを10回判定する) なお、「ボタンが押されるまでは勝手にループしないこと」。 【コード】(UserFrom1に記載。質問用として、変数名は仮に日本語にしてあります) Public 押された As Long Dim 現在のラウンド As Long Dim 最終ラウンド As Long Private Sub ラウンド処理() 最終ラウンド = 10 For 現在のラウンド = 1 To 最終ラウンド ボタン判定 Next 現在のラウンド End Sub Private Sub ボタン判定() MsgBox 現在のラウンド & ":" & 押された End Sub Private Sub CommandButton1_Click() ラウンド処理 End Sub Private Sub CommandButton2_Click() 押された = 2 End Sub Private Sub CommandButton3_Click() 押された = 3 End Sub Private Sub CommandButton4_Click() 押された = 4 End Sub Private Sub CommandButton5_Click() 押された = 5 End Sub 【詰まっている点】 ボタンの入力待ちになるような文が入っていないため、 「1:0」「2:0」「3:0」…「10:0」とmsgboxが出るだけの状態です。 (当然ですが…) VBAの 【質問】 毎ラウンドごとにボタンの入力待ちのような状態を 「できるだけこの形を崩さずに」組み込むためには、どのような処理を加えればいいでしょうか。

  • VBA:助けてください。呼び出してもいないのに独立なプロシージャへ、処理が飛んでしまう。アドバイスお願い致します。

    Useform1のコマンドボタンをクリックすると Private Sub CommandButton1_Click() Call 処理 End Sub というように、「処理」を呼び出し。これで終わるようにしていました。しかし、不具合が出てしまい、ステップインで見てみると「処理」からEndSubに行き、その後Useform2のコマンドボタンイベントのEnd Withへ Private Sub CommandButton1_Click() With Userform1 .... End With ←    ・・・ End Sub 上のように矢印の部分へ飛んでしまいます。全く、独立な、コマンドイベントへ飛んで処理されているのです。それも、飛んだ箇所がEnd Withからです。こんなことがあるのでしょうか? Private Sub CommandButton1_Click() Call 処理 Exit Sub End Sub 上のようにExit Subを追加してもやはりそこから飛んでしまいます。 なぜでしょうか?詳しい方アドバイスお願い致します。

  • コマンドボタンを押すと・・・

    vbの超初心者なのですが、フォームにコマンドボタンを何度か設置したら Private Sub Button1_Click(sender As System.Object,・・・ というのと Private Sub Button1_Click_1(sender As System.Object,・・・ というのが出来上がっていて、コマンドボタンをクリックすると Private Sub Button1_Click_1 のほうのコードが実行されるのですが、 Private Sub Button1_ClickとPrivate Sub Button1_Click_1 の違いはなんでしょうか? Private Sub Button1_Clickは、どのコマンドボタンを押せば実行されるのでしょうか?

  • エクセルVBA

    ユーザーフォームがあり、コマンドボタンが準備されています そのコマンドボタンをクリックした場合、処理1~処理3を実行するようにしています Sub CommandButton1_Click() CommandButton1処理1 CommandButton1処理2 CommandButton1処理3 End Sub Private Sub CommandButton1処理1() ・・・ End Sub Private Sub CommandButton1処理2() ・・・ End Sub Private Sub CommandButton1処理3() ・・・ End Sub 処理1→処理2→処理3という流れが進むかと思います 処理1の中にIf~End ifがあり、Ifに合致する場合はメッセージボックスが表示するようになっています 処理3の中に、「ユーザーフォームを閉じる」記載がされています 処理1のIfに合致する場合、メッセージボックスを表示させユーザーフォームを閉じることなく終了したいです つまりIfに合致した場合、その後の処理2、処理3をさせず処理1で終了させればいいのかと思ったのですが、そのようなことはできるのでしょうか? 処理1でIfに合致する場合、Exit Subとすると処理1は終了するかもしれませんが、その後処理2、処理3に進んでしまうので困っています よろしくお願いします

  • VBA Shell

    VBA のコマンドボタンで他のソフトを起動したいのですが Private Sub CommandButton1_Click() Shell "C:\Windows\Notepad.exe", 1 End Sub でノートパットは起動しますが マイドキュメントに置いてある XX.EXEを起動したくて Private Sub CommandButton1_Click() Shell "C:\Users\X\Documents\XX.exe", 1 End Sub としても起動しません この方法で マイドキュメントに置いてある XX.EXEを起動することは出来ないのでしょうか

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

  • サブルーチンの使い方

    こんにちは 以前 このサイトでサブルーチンを教えて頂いたのですが 今回は、このサブルーチンを使って Commandbuttonに Sheets("20年7月度").Cells(2, 6).Value = Cells(2, 6) & Mojiを 入れたいのですが、どのようにすれば いいですか? 宜しくお願い致します。 Private Sub mySub(Moji) '数字 If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & Moji Else: TextBox1.Value = TextBox1 & Moji End If End Sub Private Sub CommandButton1_Click() 'サブルーチン Call mySub("1") End Sub Private Sub CommandButton2_Click() Call mySub("2") End Sub Private Sub CommandButton3_Click() Call mySub("3") End Sub Private Sub CommandButton4_Click() Call mySub("4") End Sub Private Sub CommandButton5_Click() Call mySub("5") End Sub Private Sub CommandButton6_Click() Call mySub("6") End Sub Private Sub CommandButton7_Click() Call mySub("7") End Sub Private Sub CommandButton8_Click() Call mySub("8") End Sub Private Sub CommandButton9_Click() Call mySub("9") End Sub Private Sub CommandButton10_Click() Call mySub("0") End Sub Private Sub CommandButton11_Click() Call mySub("00") End Sub Private Sub CommandButton12_Click() Call mySub("000") End Sub

  • エクセルのVBAのことで

    コマンドボタンで「Macro1」というマクロを実行させるVBAは以下だと思いますが。 Private Sub CommandButton1_Click() Call Macro1 End Sub 上記に、Sheet1・Sheet2・Sheet3に対して実行するということを加えると、どんなふうになるでしょうか。

専門家に質問してみよう