• 締切済み

excel vba です

シートにActiveXコントロールでボタンを作りました そのボタン押下時、 標準モージュールにあるソースを直接呼出したいのですが、 ボタンとそのモジュールの割り当て方がわかりません 教えてください (1) sheet1 に CommandButton1 というボタンがあります (2) 標準モージュールにある、 Sub test() というモジュールを直接呼び出したい 普通にやると、Sheet1 に Private Sub CommandButton1_Click() というモジュールができてしまいます そこから、Sub test() をcall するのではなく、直接呼び出したいのです 教えてください、宜しくお願いします

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

シートにコマンドボタンを貼り付けるのは、体裁のためでなく Private Sub CommandButton1_Click() End Sub というイベントプロシを通じて、ユーザーのやりたいプログラムを実行させたいがための仕組みである。 Private Sub CommandButton1_Click() End Sub の間にプロシージャー名を書けばしまいではないか。 こういう仕組みを使わないで自分で似た公か効果を挙げるのは、無理だし無駄。 >Sub test() をcall するのではなく、直接呼び出したいのです とは何を意味するのか。 初心者だと思うが余り凝ったことを考えないこと。 Callを形の上では  省くことは出来る。 >標準モージュールにあるソースを直接呼出したいのですが 「直接」の意味がわからない。 兆区セル呼び出せたとしてどういう効果がある? Private Sub CommandButton1_Click() test End Sub と書ける。 Testは標準モジュールにおいたモジュールの名。 しかしこんなことを聞いていないだろう。 APIやウインドウズの仕組みを勉強するまでは、思いつきの質問は控えるべきだ。

回答No.2

> ではボタンではなく、テキストボックスのlostfocus時、に標準モジュールを呼び出す方法があれば教えてください できない。

回答No.1

それなら ActiveX コントロールのボタンじゃなく フォーム コントロールのボタンを使う必要がある。 フォーム コントロールのボタンならボタンへのマクロ登録で標準モジュールの test プロシージャを直接呼び出せる。

kkkkyoko
質問者

補足

はやり、 フォーム コントロールのボタンでマクロの登録でないとできないのでしょうか? ではボタンではなく、テキストボックスのlostfocus時、に標準モジュールを呼び出す方法があれば教えてください 宜しくお願いします

関連するQ&A

  • ExcelのVBAで質問です

    ワークシート上にコントロールのテキストボックスを置いています。 このテキストボックスの値(TextBox.Value)を別で作った標準モジュール内のサブプロシージャの中で 使うにはどのようにすればよいのでしょうか? 例として以下のようなプログラムです。 '■■■ Sheet1 ■■■ Dim ThisDate As String ThisDate = TextBox1.Value & "日" Private Sub CommandButton1_Click()    Call test End Sub '■■■ 標準モジュール ■■■ Sub test()    MsgBox ThisDate End Sub おわかりの方宜しくお願いします。

  • エクセルのVBAのことで

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

  • VBAのプロパティウィンドウについて

    VBAでプロパティウィンドウには ・Microsoft Excel Object ・フォーム ・標準モジュール があります。 ところで、下のプログラムですが、(1)の部分を標準モジュールに書き込み、フォームにあるコマンドボタンをクリックしたら、"test.xls"が表示されます。 しかし、(1)の部分をMicrosoft Excel Object のsheet1(sheet1)のコードに書き込み、プログラムを実行させると、フォームのコマンドボタンをクリックしても"test.xls"は表示されません。 これはなぜですか? (1)の部分のコマンドボタン1はsheet1に存在します。 (1)----------------------------------- Private file_name as string Private Sub CommandButton1_Click()   file_name="test.xls" UserForm1.Show End Sub (1)----------------------------------- フォーム Sub CommandButton1_Click() MsgBox file_name End Sub

  • EXECEL VBA コマンドボタンからのモジュール呼び出し 

    お世話になります. Excelのワークシート上にコマンドボタンを表示させ, そのコマンドボタンを押下することで, 作成したモジュールを実行させたく思っています. 下記記述のUserFormの****の部分に, 作成した標準モジュールを呼び出す記述が必要と考えておりますが, 上手くいきません. ちなみに標準モジュールは完成済みです. Private Sub CommandButton1_Click() ***************** End Sub 有識者の方,ご存知の方がいらっしゃいましたらご教授願います.

  • vba なのですが...

    EXCEL の VBA です ActiveX コントロールで テキストボックス があります その、テキストボックス のLostFocus時のイベントなんですが、 標準モジュールで書かれているソースを直接呼びたいです Private Sub TextBox1_LostFocus() から、callするのではなく、 直接 呼び出す方法はあるのでしょうか? おしえてください

  • エクセルマクロ(VBA)での手順

    エクセルマクロ(Vba)にて、ご教示をお願い致します。 ユーザーフォーム上にデータをクリアするコマンドボタンを沢山貼り付けております。 一括クリアするボタンを作成したのですが長文になってしまいます。 Private Sub CommandButton101_Click()   Call CommandButton1_Click   Call CommandButton2_Click   Call CommandButton3_Click   Call CommandButton4_Click   Call CommandButton5_Click   Call CommandButton6_Click ↓ ↓ ↓   Call CommandButton50_Click End Sub 以下のような内容に置き換えたいのですが、上手くいきません。 For i = 1 To 50 Me.Controls ("CommandButton1" & i & "_Click") Next 本を片手に、やっておるのですが行き詰ってしまいました。 お知恵を拝借させてください。 よろしくお願いたします。

  • VBAでマルチページの表示

    エクセル2002使用です。 ユーザーフォーム(オブジェクト名:UserForm1)に、マルチページ(オブジェクト名:page1)を配置してフォームを作成しました。 Sheet1にコマンドボタンを貼り付け、コマンドボタンをクリックして、標準モジュールを呼び出し、マルチページを標準モジュールから呼び出せるようにしたいのですがうまくいきません。 ’Sheet1 Private Sub CommandButton1_Click() Call フォーム表示 End Sub ’標準モジュール Sub フォーム表示() UserForm1.Show ’?ここのコードをいろいろ試したのですがわかりません。 End Sub この他 UserForm1.ShowPages "page1" とか 変数を入れてみたりしたのですが、うまくいきません。 すいませんが、よろしくお願いします。

  • VBA 標準モジュールとフォーム (続き)

    先ほど、同じ質問タイトルで質問させていただいたものです。この場合どうなりますか? モジュールでの変数file_nameをフォームのボタンをクリックしたら"text.xls"が表示されるようにしたいです。 (イメージとしては、エクセルのsheet1にコマンドボタンがあってクリックするとフォームが立ち上がってフォームのコマンドボタンをクリックすると"test.xls"が表示される) モジュール Private Sub CommandButton1_Click() ←エクセルsheet1にボタンがある   dim file_name as string file_name="test.xls"   UserForm1.Show End Sub フォーム(UserForm1) Sub CommandButton1_Click() ←フォームにボタンがある MsgBox file_name End Sub

  • 【vba】フォームに書いてあるコードをステップインすることは不可能でしょうか?

    エクセルもアクセスも同じなんですが フォームのモジュール?に書いてあるコードを 「F8」のステップインすることは不可能でしょうか? 標準モジュールなら 「F8」で少しずつVBAコードを試すことが可能なのですが、 フォームに書いてあるほうはできません。 ひとつひとつ試したいので Private Sub コマンド1_Click() Call test End Sub とフォームのところに書き、 標準モジュールには Sub test() ・・・ End Sub と書いて 標準モジュールのほうを F8で少しずつデバッグしています。 こうするしかないのでしょうか? よろしくお願いします。

  • EXCEL VBAのユーザーフォームに引数を渡す方法について

    すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click()  m = 1  Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click()  m = 2  Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer)  UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click()   If m = 1 Then    MsgBox "ボタン2"   ElseIf m = 2 Then    MsgBox "ボタン2"   End If  Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。

専門家に質問してみよう