返回列表 上一主題 發帖

[發問] checkbox重覆執行

[發問] checkbox重覆執行

Hi 各位大大,想請教一下
我希望勾選checkbox(checkbox.value = true)後會執行我要做的事,再取消(checkbox.value = false)就不做任何事,再勾選checkbox(checkbox.value = true)會再執行我要做的事

但我如果在程式碼中間加入"do while",就只有第一次勾選checkbox時會執行我要做的事
Private Sub ddrmaxretrain_Click()
    If ddrmaxretrain.Value = True Then
        Do While maxretrain = ""
            maxretrain = Application.InputBox("DDR Max Retrain Count(1~999)")
        Loop
    Else
    End If
End Sub

但如果是像這樣寫的話,我只要勾選checkbox就會執行動作,取消再勾選一樣都會執行動作
Private Sub ddrmaxretrain_Click()
    If ddrmaxretrain.Value = True Then
        maxretrain = Application.InputBox("DDR Max Retrain Count(1~999)")
    Else
    End If
End Sub

本帖最後由 GBKEE 於 2012-10-19 16:39 編輯

回復 1# xgit0072
當 Application.InputBox("DDR Max Retrain Count(1~999)")  時, 你無法去作 取消 或 勾選 的動作

程式碼中間加入"do while",就只有第一次勾選checkbox 會執行我要做的事
對啊!只要是 If ddrmaxretrain.Value = True  勾選checkbox

但如果是像這樣寫的話,我只要勾選checkbox就會執行動作,取消再勾選一樣都會執行動作 , 不會這樣吧 !
  1. Private Sub ddrmaxretrain_Click()
  2.     If ddrmaxretrain.Value = True Then       '勾選checkbox
  3.         maxretrain = Application.InputBox("DDR Max Retrain Count(1~999)")
  4.     Else          '取消勾選checkbox
  5.       執行這裏程式碼 ......   
  6. End If
  7. End Sub
複製代碼

TOP

回復 1# xgit0072
Hi, 我不知道你maxretrain是全域變數還是其他控制項
但第一次勾選checkbox後 , maxretrain就從inputbox取得值(已經不是""了)
所以取消後, 重勾選就不會進入 do...loop 迴圈 ...

看看是不是你要的:
Private Sub ddrmaxretrain_Click()
    If ddrmaxretrain.Value = True Then
        Do While maxretrain = ""
            maxretrain = Application.InputBox("DDR Max Retrain Count(1~999)")
        Loop
    Else
        maxretrain = ""
    End If
End Sub

TOP

sorry,我上面的敘述可能不是很清楚~~

當 Application.InputBox("DDR Max Retrain Count(1~999)")  時, 你無法去作 取消 或 勾選 的動作
-->我的意思是說,當我輸入完資料,inputbox關掉後,我把checkbox取消,這時會執行checkbox.value=false後的程式碼

但如果我再打勾一次,他又會再執行checkbox.value = true後的程式碼


1. 勾選checkbox
2.跳出inputbox,輸入資料
3.inputbox關閉
4.此時不小心按到checkbox,導致checkbox.value = false
5.我再勾選一次checkbox-->這時應該會再跳出inputbox讓我輸入資料

TOP

非常感謝stillfish00 大大~~

之前沒有想到,要把maxretrain的值清掉,你一句話就點醒了我...
用你的方式已經解決了喲!!謝謝你!!

TOP

回復 5# xgit0072
不清的話 , while換後面也一樣
Do
        maxretrain = Application.InputBox("DDR Max Retrain Count(1~999)")
Loop While maxretrain = ""

TOP

hi GBKEE 大大~~
因為我要判斷inpubox是否有值,所以我才會加入do while
所以你的方式不適合我用!謝謝啦!

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題