返回列表 上一主題 發帖

[發問] EXCEL VBA 4個判斷執行4巨集與3按鈕

回復 2# bqwangs
是這樣嗎?
  1. Const Sh = "工作表1"
  2. Dim Msg As Boolean
  3. Sub Sub_Start()
  4.     Msg = True
  5.     With Sheets(Sh)
  6.         If .[C5] = 1 Then
  7.             巨集1
  8.         ElseIf .[C5] = -1 Then
  9.             巨集3
  10.         End If
  11.     End With
  12. End Sub
  13. Sub Sub_stop()
  14.      巨集2
  15. End Sub
  16. Sub 巨集1()
  17.     With Sheets(Sh)
  18.         .Range("A8") = 0
  19.         Do While Msg
  20.            .Range("A8") = 1
  21.             DoEvents
  22.         Loop
  23.     End With
  24. End Sub
  25. Sub 巨集2()
  26.     Msg = False '
  27.     Sheets(Sh).Range("B8") = "0"
  28. End Sub
  29. Sub 巨集3()
  30.     With Sheets(Sh)
  31.         Do While Msg
  32.            .Range("C8") = -1
  33.             DoEvents
  34.         Loop
  35.     End With
  36. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# bqwangs
  1. '這些程序設在 SHEET1[活頁簿的物件模組]
  2. Option Explicit
  3. Dim Msg As Boolean
  4. Sub 啟動鈕()
  5.     If Msg = True Then Exit Sub                        '停止程式的運行
  6.     If [C5] = 1 Then 巨集1                          '為1執行巨集1
  7.     If [C5] = -1 Then 巨集3                         '為1執行巨集3
  8.     If [C5] = 0 Then 巨集2                          '為1執行巨集2
  9.     Application.OnTime Time + #12:00:01 AM#, "SHEET1.啟動鈕" '間隔一秒執行 啟動鈕
  10.      'Application.Time [時執行的時間],[執行的程序]
  11.      '執行的程序是 SHEET1[活頁簿的物件模組],內的程序要指明物件模組的名稱
  12. End Sub
  13. Sub 停止鈕()
  14.     Do While [C5] <> 0  '會等到C5儲存格為 0 才停止
  15.         DoEvents
  16.     Loop
  17.     Msg = True   '停止再度執行 啟動鈕
  18.     巨集2
  19.     End
  20.     '(1)如果C5儲存格為1 或 -1,會等到C5儲存格為 0 才停止(也就是會執行完巨集2)
  21.     '(2)如果C5儲存格為0,直接停止(不會執行巨集2)
  22.     '歸納(1)(2)->執行巨集2
  23. End Sub
  24. Sub 緊急鈕()
  25.     Msg = True   '停止再度執行 啟動鈕
  26.     巨集2
  27.     End
  28.     '(1)如果C5儲存格為 1 或-1 ,馬上會執行巨集2,立即停止
  29.     '(2)如果C5儲存格為0,直接停止(不會執行巨集2)(與停止鈕第2條敘述一樣)
  30.     '歸納(1)(2)->執行巨集2
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2014-4-11 07:45 編輯

回復 9# bqwangs
是這樣嗎?
工作表模組上的程式碼
  1. Dim Msg(1 To 3) As Boolean, C_5 As Integer, Rng As Range
  2. Private Sub Worksheet_Calculate()
  3.     '2 選 1 :*** 如 C5 為公式 用此重算事件(工作表模組的預設事件程序)
  4.     If Not Msg(1) Then
  5.         MsgBox "尚未 按下啟動紐"
  6.     ElseIf Rng <> C_5 Then
  7.         Ex
  8.     End If
  9. End Sub
  10. Private Sub Worksheet_Change(ByVal Target As Range)
  11.     '2 選 1 :*** 如是直接在C5上改變值 用此工作表上儲存格有改變事件(工作表模組的預設事件程序)
  12.     If Not Msg(1) Then
  13.         MsgBox "尚未 按下啟動紐"
  14.     ElseIf Target.Address = "$C$5" Then
  15.         Ex
  16.     End If
  17. End Sub
  18. Private Sub 啟動鈕()
  19.     Msg(1) = True
  20.     Set Rng = [C5]
  21.     C_5 = [C5]
  22. End Sub
  23. Private Sub 停止鈕()
  24.     Msg(2) = True
  25. End Sub
  26. Private Sub 緊急鈕()
  27.     Msg(3) = True
  28. End Sub
  29. Private Sub Ex()
  30.     If Msg(1) And Not Msg(2) And Not Msg(3) Then '啟動鈕
  31.         Select Case C_5         '先前C5的值
  32.             Case 0              'C_5 = 0
  33.                 If Rng = 1 Then 'C5 變動後的值
  34.                      巨集A
  35.                 ElseIf Rng = -1 Then
  36.                     巨集C
  37.                 End If
  38.             Case 1              'C_5 = 1
  39.                 If Rng = 0 Then 巨集B
  40.             Case -1             'C_5 = -1
  41.                 If Rng = 0 Then 巨集D
  42.         End Select
  43.     ElseIf Msg(2) And Not Msg(3) Then '停止鈕
  44.            If Rng = 0 Then End   '程式停止
  45.            Select Case Rng
  46.             Case 1
  47.                 巨集B
  48.             Case -1
  49.                 巨集D
  50.         End Select
  51.     ElseIf Msg(3) Then          '停止鈕
  52.          If Rng = 0 Then End    '程式停止
  53.            Select Case Rng
  54.             Case 1
  55.                 巨集B
  56.             Case -1
  57.                 巨集D
  58.         End Select
  59.         End                     '程式停止
  60.     End If
  61.     C_5 = Rng                   '紀錄C5的修改
  62. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題