teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

書式の改善

2019/02/26 00:49

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -67,6 +67,7 @@
67
67
  上記のコードは、F_Wait の呼び出しがちょっと面倒です。呼び出しをメソッド(Subプロシージャ)にするとシンプルに呼び出せます。
68
68
 
69
69
  **F_waitのモジュール**
70
+ ```vba
70
71
  Option Explicit
71
72
  Private sProcName As String
72
73
  Private sobj As Object

1

改良案の追加

2019/02/26 00:48

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -60,4 +60,45 @@
60
60
  Public Sub ModuleProc()
61
61
  MsgBox "ModuleProc"
62
62
  End Sub
63
- ```
63
+ ```
64
+
65
+ 改良案
66
+ ---
67
+ 上記のコードは、F_Wait の呼び出しがちょっと面倒です。呼び出しをメソッド(Subプロシージャ)にするとシンプルに呼び出せます。
68
+
69
+ **F_waitのモジュール**
70
+ Option Explicit
71
+ Private sProcName As String
72
+ Private sobj As Object
73
+
74
+ Public Sub Start(ProcName As String, Optional msg As String, Optional obj As Object)
75
+ sProcName = ProcName
76
+ If Not obj Is Nothing Then Set sobj = obj
77
+ Me.Label1.Caption = msg
78
+ Me.Show vbModal
79
+ End Sub
80
+
81
+ Private Sub UserForm_Activate()
82
+ If Not sobj Is Nothing Then
83
+ CallByName sobj, sProcName, VbMethod
84
+ ElseIf sProcName <> "" Then
85
+ Application.Run sProcName
86
+ End If
87
+ Unload Me
88
+ End Sub
89
+ ```
90
+
91
+ **F1 のモジュール**
92
+ ```vba
93
+ Private Sub CommandButton1_Click()
94
+ F_Wait.Start "FormProc", _
95
+ "FormProc を実行中です。しばらくお待ちください。", _
96
+ Me
97
+ End Sub
98
+
99
+ Private Sub CommandButton2_Click()
100
+ F_Wait.Start "ModuleProc", _
101
+ "ModuleProc を実行中です。しばらくお待ちください。"
102
+ End Sub
103
+ ```
104
+ F_Wait.Start とメソッドを呼び出すことで、F_Wait は自動でLoadされます。あとは、引数で、プロシージャ名等を渡せばいいだけです。