回答編集履歴

1

追記

2016/01/15 04:40

投稿

jawa
jawa

スコア3015

test CHANGED
@@ -85,3 +85,159 @@
85
85
 
86
86
 
87
87
  現在MouseUp時に行っている画像やラベルの変更処理をメソッド化し、タイマーイベントとMouseUpイベントで同じ処理を呼び出すようにすれば目的の動作になると思います。
88
+
89
+
90
+
91
+ ---
92
+
93
+ 上記サンプルはユーザーフォームを使わずExcelシート上で動作するものでしたが、フォーム表示中は動作しないようでした。
94
+
95
+ Microsoftの技術情報にAPIを利用する方法がありましたので、別案として追記させていただきます。
96
+
97
+
98
+
99
+ (参考サイト)
100
+
101
+ https://support.microsoft.com/ja-jp/kb/180736
102
+
103
+
104
+
105
+
106
+
107
+ ①「モジュールの追加」で標準モジュールを作成し、以下コードを追加する
108
+
109
+ ```
110
+
111
+ Declare Function SetTimer Lib "user32" _
112
+
113
+ (ByVal hwnd As Long, _
114
+
115
+ ByVal nIDEvent As Long, _
116
+
117
+ ByVal uElapse As Long, _
118
+
119
+ ByVal lpTimerFunc As Long) As Long
120
+
121
+
122
+
123
+ Declare Function KillTimer Lib "user32" _
124
+
125
+ (ByVal hwnd As Long, _
126
+
127
+ ByVal nIDEvent As Long) As Long
128
+
129
+
130
+
131
+ Global iCounter As Integer
132
+
133
+
134
+
135
+ Sub TimerProc(ByVal hwnd As Long, _
136
+
137
+ ByVal uMsg As Long, _
138
+
139
+ ByVal idEvent As Long, _
140
+
141
+ ByVal dwTime As Long)
142
+
143
+
144
+
145
+ 'ここにタイマーイベントで行いたい処理を記述する
146
+
147
+ iCounter = iCounter + 1
148
+
149
+ UserForm1.colorword
150
+
151
+ End Sub
152
+
153
+ ```
154
+
155
+
156
+
157
+ ②ユーザーフォーム(UserForm1)にCommandButton1とLabel7を配置し、タイマーの開始/終了を制御する(以下ではCommandButton1クリックで開始/停止)
158
+
159
+ ```
160
+
161
+ Dim lngTimerID As Long
162
+
163
+ Dim BlnTimer As Boolean
164
+
165
+
166
+
167
+ Private Sub Form_Load()
168
+
169
+ BlnTimer = False
170
+
171
+ Command1.Caption = "Start Timer"
172
+
173
+ End Sub
174
+
175
+
176
+
177
+ Private Sub CommandButton1_Click()
178
+
179
+ If BlnTimer = False Then
180
+
181
+ 'Startボタンの時にクリックした場合
182
+
183
+ 'タイマー開始(5000ミリ秒=5秒)
184
+
185
+ lngTimerID = SetTimer(0, 0, 5000, AddressOf TimerProc)
186
+
187
+ If lngTimerID = 0 Then
188
+
189
+ MsgBox "タイマーを開始できませんでした。"
190
+
191
+ Exit Sub
192
+
193
+ End If
194
+
195
+ BlnTimer = True
196
+
197
+
198
+
199
+ 'Stopボタンに変更
200
+
201
+ CommandButton1.Caption = "Stop Timer"
202
+
203
+ Else
204
+
205
+ 'Stopボタンの時にクリックした場合
206
+
207
+ 'タイマー停止
208
+
209
+ lngTimerID = KillTimer(0, lngTimerID)
210
+
211
+ If lngTimerID = 0 Then
212
+
213
+ MsgBox "タイマーを停止できませんでした。"
214
+
215
+ End If
216
+
217
+ BlnTimer = False
218
+
219
+
220
+
221
+ 'Startボタンに変更
222
+
223
+ CommandButton1.Caption = "Start Timer"
224
+
225
+ End If
226
+
227
+ End Sub
228
+
229
+
230
+
231
+ '↓標準モジュールから呼び出すためPublic関数にしています。
232
+
233
+ Public Sub colorword()
234
+
235
+ '↓カウントをラベル7に表示しているだけです
236
+
237
+ Label7.Caption = iCounter
238
+
239
+ End Sub
240
+
241
+ ```
242
+
243
+