エクセルでデータとグラフが自動更新するプログラムを作っています。
自動更新のマクロはできました。
それを、ボタンを押して実行するようにしております。
[フォームコントロール]から[マクロの登録]でできました。
次に自動更新マクロを止めるstopボタンを設置しようとしました。
[avtiveXコントロール]からボタンを選びました。
がstopを押しても自動更新が止まりません。
以下、ボタンに割り当てたプログラムとイメージです。
vba
1Option Explicit 2Dim Inputcheck As Integer 3Dim Sleeptime_s, Sleeptime, Logtime 4Dim bStop As Boolean 5Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'APIを宣言 6Sub auto_updata() 7 bStop = False 8 Do 9 Inputcheck = 0 10 Sleeptime_s = InputBox(prompt:="更新間隔(s)を指定してください." & vbCrLf & _ 11 "※1以上の整数です.", Title:="入力画面", Default:=1) 12 If IsNumeric(Sleeptime_s) Then 13 Sleeptime = Val(Sleeptime_s) 14 If Sleeptime <> Int(Sleeptime) Or 0 >= Int(Sleeptime) Then 15 MsgBox ("更新間隔(s)が適切ではありません.") 16 Inputcheck = 1 17 End If 18 Else 19 MsgBox ("更新間隔(s)が適切ではありません.") 20 Inputcheck = 1 21 End If 22 Loop While Inputcheck = 1 23 24 Do 25 Call Datalog_01 26 Sleep Sleeptime * 1000 27 DoEvents '他のイベントを処理する 28 If bStop = True Then Exit Sub 'ストップボタンが押されたら終わり 29 Loop 30 31End Sub 32 33Private Sub CommandButton1_Click() 34 bStop = True 35End Sub
どうやら上手くprivate sub がボタンと結びついてないようなのですが、
どこをどうしたらわからす悪戦苦闘しております。
詳しい方いらっしゃいましたら、ご教授頂けませんでしょうか。
何卒、宜しくお願い致します。m(_ _)m
stopボタンを押して[CommandButton1_Click]に入ってくるところまでは確認できていますか?
auto_updata()の先頭でbStop = Trueとして1回だけなら処理が終了するでしょうか?
takito様 確認できておりません。といいますか確認の方法がわかりません(TT)もしよろしければお教えいただけませんでしょうか。
sazi様 終了できました!
bStop = True の行にブレークポイントを置いてstopボタンを押してください。またはその行の前後に Debug.Print "stop" とでも記述してイミディエイトウィンドウに stop と文字が出てくるか見てみましょう。
takito様 そもそも紐つけされてないのが、原因のようです。

回答2件
あなたの回答
tips
プレビュー