回答編集履歴

2

書式の改善

2019/02/26 00:49

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -136,6 +136,8 @@
136
136
 
137
137
  **F_waitのモジュール**
138
138
 
139
+ ```vba
140
+
139
141
  Option Explicit
140
142
 
141
143
  Private sProcName As String

1

改良案の追加

2019/02/26 00:48

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -123,3 +123,85 @@
123
123
  End Sub
124
124
 
125
125
  ```
126
+
127
+
128
+
129
+ 改良案
130
+
131
+ ---
132
+
133
+ 上記のコードは、F_Wait の呼び出しがちょっと面倒です。呼び出しをメソッド(Subプロシージャ)にするとシンプルに呼び出せます。
134
+
135
+
136
+
137
+ **F_waitのモジュール**
138
+
139
+ Option Explicit
140
+
141
+ Private sProcName As String
142
+
143
+ Private sobj As Object
144
+
145
+
146
+
147
+ Public Sub Start(ProcName As String, Optional msg As String, Optional obj As Object)
148
+
149
+ sProcName = ProcName
150
+
151
+ If Not obj Is Nothing Then Set sobj = obj
152
+
153
+ Me.Label1.Caption = msg
154
+
155
+ Me.Show vbModal
156
+
157
+ End Sub
158
+
159
+
160
+
161
+ Private Sub UserForm_Activate()
162
+
163
+ If Not sobj Is Nothing Then
164
+
165
+ CallByName sobj, sProcName, VbMethod
166
+
167
+ ElseIf sProcName <> "" Then
168
+
169
+ Application.Run sProcName
170
+
171
+ End If
172
+
173
+ Unload Me
174
+
175
+ End Sub
176
+
177
+ ```
178
+
179
+
180
+
181
+ **F1 のモジュール**
182
+
183
+ ```vba
184
+
185
+ Private Sub CommandButton1_Click()
186
+
187
+ F_Wait.Start "FormProc", _
188
+
189
+ "FormProc を実行中です。しばらくお待ちください。", _
190
+
191
+ Me
192
+
193
+ End Sub
194
+
195
+
196
+
197
+ Private Sub CommandButton2_Click()
198
+
199
+ F_Wait.Start "ModuleProc", _
200
+
201
+ "ModuleProc を実行中です。しばらくお待ちください。"
202
+
203
+ End Sub
204
+
205
+ ```
206
+
207
+ F_Wait.Start とメソッドを呼び出すことで、F_Wait は自動でLoadされます。あとは、引数で、プロシージャ名等を渡せばいいだけです。