Board logo

標題: [發問] Excel VBA 自訂表單多重頁面問題 [打印本頁]

作者: lichang    時間: 2015-9-21 23:16     標題: Excel VBA 自訂表單多重頁面問題

請問各位大大一個小問題
我自訂了一個表單,是使用多重頁面的方式
我想要觸發表單1時,能夠啟動某個巨集
                            2時,能夠啟動某個巨集
                         以此類推
我想應該是跟click指令有關係,但我不知道前面是要怎麼寫
有人可以教一下嗎??
作者: GBKEE    時間: 2015-9-22 16:34

回復 1# lichang
不知你觸發表單的方式
下面的 UserForm (表單) 事件程式都可以執行你的巨集
  1. Private Sub UserForm_Activate()
  2. '表單變成現用表單視窗的時候,會發生 Activate 事件。
  3. End Sub
  4. Private Sub UserForm_Click()
  5. '滑鼠左鍵按一下表單,則會發生 Click 事件。
  6. End Sub
  7. Private Sub UserForm_Initialize()
  8. 'Initialize 事件 發生在一個物件載入後 , 但尚未顯示的時候
  9. End Sub
複製代碼

作者: lichang    時間: 2015-9-22 22:55

回復 2# GBKEE

請問如果是要觸發"多重頁面"的"第一分頁"或"第二分頁"時,要怎麼設定觸發條件??
作者: lichang    時間: 2015-9-23 00:03

回復 2# GBKEE

我試了一下語法,似乎可以呼叫!!
但目前問題在於畫面反而不會即時更新,請問該如何處理??
目前紅字部分不知道該如何修改,才能即時更新選定頁面內容!!

Private Sub MultiPage1_Change()
   If MultiPage1.Value = 1 Then
      Image_ZOrder
   Else
      MultiPage1.Value.Show
   End If
End Sub
作者: GBKEE    時間: 2015-9-23 06:27

回復 4# lichang
但目前問題在於畫面反而不會即時更新,請問該如何處理??
可否附檔說明
你了解一下這 .Value   .Visible 的屬性
  1. Private Sub MultiPage1_Change()
  2. MsgBox MultiPage1.Value
  3.    If MultiPage1.Value = 1 Then
  4.       Image_ZOrder
  5.    Else
  6.       MultiPage1.Visible = False
  7.    End If
  8. End Sub
複製代碼

作者: lichang    時間: 2015-9-25 09:23

回復 5# GBKEE

大大,我有放附件上去,主要問題是,當我從第二分頁要切換回第一分頁時,無法顯示第一分頁
一定要再按一次"第二分頁"然後按回"第一分頁"才會顯示,請問為什麼??

[attach]22090[/attach]
作者: GBKEE    時間: 2015-9-25 15:22

回復 6# lichang
  1. Private Sub MultiPage1_Change()
  2.     If MultiPage1.Value = 1 Then
  3.         Image_ZOrder '將程式控制權轉移 這 [Image_ZOrder]程序,
  4.         '須等這程式執行完畢,程式控制權才會回到這裡
  5.         '繼續 End If 下面的程式碼
  6.         'Image_ZOrder 執行期間, MultiPage1_Change的程式不會執行的
  7.         '所以異動兩次後才會回復
  8.     Else
  9.         '''程式碼
  10.     End If
  11.     '''End If後的程式碼
  12.     '''End If後的程式碼
  13. End Sub
複製代碼
試試看
  1. Dim Msg As Boolean, Form_Msg As Boolean
  2. Private Sub MultiPage1_Change()
  3.     If MultiPage1.Value = 1 Then
  4.         Msg = True
  5.     Else
  6.         Msg = False
  7.     End If
  8. End Sub
  9. Private Sub UserForm_Activate()
  10.     Do While Form_Msg = False
  11.         DoEvents
  12.         If Msg = True And MultiPage1.Value = 1 Then
  13.             Image_ZOrder
  14.         End If
  15.     Loop
  16. End Sub
  17. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  18.     Form_Msg = True
  19. End Sub
  20. Private Sub Image_ZOrder()
  21.     Dim Ar(), i As Integer, j As Integer, t As Date
  22.     Ar = Array(Image1, Image2, Image3)
  23.     t = Time
  24.     Do While Msg = True And MultiPage1.Value = 1 '執行這 Do Loop 的迴圈
  25.         DoEvents
  26.         'Sleep 1000
  27.         If t + #12:00:01 AM# <= Time Then  '每秒一次,也可以不用 Sleep
  28.             Ar(i).ZOrder msoBringToFront
  29.             i = i + 1
  30.             If i > UBound(Ar) Then i = 0
  31.             t = Time
  32.         End If
  33.     Loop
  34. End Sub
複製代碼

作者: lichang    時間: 2015-9-26 23:43

謝謝大大您的提供,只差我不能給你個讚!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)