
No.1ベストアンサー
- 回答日時:
アプリケーションが明記されていないので、Accessと判断して書き込みします。
フォーム上のコマンドボタンに関連付けされているイベントプロシージャはクラスモジュールにあります。
標準モジュール内のプロシージャからクラスモジュール内のイベントプロシージャを呼び出して実行することは出来ません。
(蛇足)
共通で使用したい処理は通常、標準モジュール内に記述しておきます。コマンドボタンをクリックしたらそのイベントプロシージャから共通のプロシージャを呼び出して実行するように工夫します。
開発の開始時に、この辺りを考慮してからはじめると楽ですし分かりやすくもなります。
回答ありがとうございました
アプリはアクセスです申し訳ございません
やっぱりそうですか・・・
実は、他人の作ったファイルでして、レポートを36000枚印刷しないといけないのですが、
3つのフォームの値を参照している関係上、既存のフォームに付けられたボタンをクリックしないと印刷できません。手作業だと36000×4クリックです。
がんばって、標準モジュールで作り直します。
No.4
- 回答日時:
miwaharuさんへ
> フォーム内のVBAということで、Me!などが多用されており、標準モジュールに簡単に転記できない状況なのです。
MeプロパティをCodeContextObjectプロパティにまとめて置換してしまえばよいように思うのですが・・・
Wendy02さんへ
> それは、クラスモジュールではなくて、クラスのことではないでしょうか?
Access2000以降はクラスモジュールは誤りで、フォームモジュールが正しい表現です。お詫びと訂正をいたします。Access97以前はクラスモジュールと呼んでいたような記憶があります。
No.3
- 回答日時:
私の方には反応がなかったのですが、私の文章は分かりにくいのでしょうか?
実際には以下のようなことは、お勧めしないのですが、印刷で、3600 * 4というのは、その前にプリンタ・バッファの問題で、Windowsそのものがハングの危機にさらされることになるので、そこにWait なり、OnTime メソッドを置くなりしなければいけません。
Sub InsteadButton()
Dim i As long
For i = 1 To 3600
Application.Run Sheet1.Shapes("Button 1").OnAction
Next i
End Sub
内容的には、質問外になるかもしれませんが、
>標準モジュール内のプロシージャからクラスモジュール内のイベントプロシージャを呼び出して実行することは出来ません。
それは、クラスモジュールではなくて、クラスのことではないでしょうか?
以下は、フォームのコマンドボタンではなく、コントロールツール側のコマンドボタンですが、クラスモジュールで作ったイベントのインスタンスを、標準モジュールからコマンドボタンに貼り付けるサンプルです。
元のご質問のクリックイベントを繰り返すこと自体は、その中に入れるわけですから、標準モジュールに、ループを作って、元のコードを貼り付けするか、Call で呼び出したほうが懸命だとは思いますが。
'<標準モジュール>
Public myClass As Class1
Sub test()
Set myClass = New Class1
Set myClass.NewBtn = Sheet1.CommandButton1
End Sub
'<Classモジュール>
Private WithEvents myNewBtn As CommandButton
Public Property Set NewBtn(ByVal myBtn As CommandButton)
Set myNewBtn = myBtn
End Property
Private Sub myNewBtn_Click()
MsgBox "ボタンが押されました!"
End Sub
回答ありがとうございます
今、拝見しました。お礼が送れて申し訳ございません
ところで、EXCELの場合の回答をいただいたわけですが、ACCESSでも利用可ということでしょうか?
じつは、フォーム内のVBAばかり利用していて、標準モジュールから、フォーム内のVBAを利用する方法をよく知りません。
ご指摘のとおり、標準モジュールに書き直すことが最善なのはわかるのですが、他人の作った代物であり、フォーム内のVBAということで、Me!などが多用されており、標準モジュールに簡単に転記できない状況なのです。
No.2
- 回答日時:
こんにちは。
>既存のフォームにあるボタンをモジュールからクリック(起動)することは可能でしょうか。
私はExcelの中でということで解釈して、ワークシート上にあるフォームに登録してあるマクロをモジュールから動かすことだとすれば、
Sub InsteadButton()
Application.Run Sheet1.Shapes("Button 1").OnAction
End Sub
ユーザーフォームなどの場合は、
Call プロシージャ名
ということになるかと思います。
また、既存のボタンを利用するのでしたら、一旦、クラスモジュールから、インスタンスを作って、そしてボタンに取り付けてやればよいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
別のユーザーフォームのコマンドボタンを押す
Visual Basic(VBA)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
-
4
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
5
プロシージャからイベントをコールする
Visual Basic(VBA)
-
6
Access VBA標準モジュールについてです。
Access(アクセス)
-
7
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
8
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
9
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
10
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
11
VBAです。ユーザーフォームの表示させ、標準モジュールを読み込ませる方法について
Visual Basic(VBA)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
エクセルVBAからアクセスフォームについて
Access(アクセス)
-
14
vba userFormのSubを標準モジュールから呼び出す方法を教えてください
Visual Basic(VBA)
-
15
access テキストボックスの値取得
Access(アクセス)
-
16
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
17
Access サブフォームでの選択行の取得
その他(データベース)
-
18
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
19
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAで、ユーザーフォーム...
-
エクセルVBA クラスモジュール...
-
印刷後メッセージボックスを表...
-
Visual Basicプログラムのエラ...
-
エクセルVBAでシートモジュール...
-
モジュールの最大数はいくつな...
-
VBでグローバル変数を宣言するには
-
ユーザー定義関数に#NAME?が返...
-
acwzlibとは?
-
【vba】フォームに書いてあ...
-
ユーザーフォーム上に表示され...
-
Perlでモジュールをインストー...
-
Tomcat マイナーバージョン移行...
-
Excel VBAでリンク切れをチェッ...
-
クラスモジュールを使わないと...
-
Excel VBA 定義されたプロージ...
-
ExcelVBA:パブリック オブジェ...
-
VBのフォームモジュールと標準...
-
VBA This Workbookモジュール...
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
VBでグローバル変数を宣言するには
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBA 定義されたプロージ...
-
vba userFormのSubを標準モジュ...
-
標準モジュールを削除したい。(...
-
'Range'メソッドは失敗しました
-
VBAで別モジュールへの変数の受...
-
モジュールからフォームのボタ...
-
モジュールの最大数はいくつな...
-
グラフのX,Y座標を取得したい
-
モジュールとクラスの違いって...
-
【vba】フォームに書いてあ...
-
Form間の値の渡し方
-
VBのフォームモジュールと標準...
-
VBA モジュールで共通に使う変...
-
Excel VBA 『Call』で呼び出す...
-
acwzlibとは?
おすすめ情報