回答編集履歴
2
書式の改善
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
改良案の追加
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されます。あとは、引数で、プロシージャ名等を渡せばいいだけです。
|