Board logo

標題: 如何得知按鈕(表單控制項)的Object Name及控制 [打印本頁]

作者: c_c_lai    時間: 2012-3-22 12:12     標題: 如何得知按鈕(表單控制項)的Object Name及控制

請教您:
我使用了   開發人員->插入->按鈕(表單控制項) , 一個名為開啟鈕,另一個為關閉鈕。
請教您,當我想要在 EXCEL 開啟時,開啟鈕為隱藏(Hide)模式,當我選按關閉鈕時,
開啟鈕就顯示出來(Enable),關閉鈕就同時變更為隱藏(Hide)模式,反之亦然。
因為我在VBA編輯器內,不知要如何得知這些按鈕的Object Name,以及能否使用
Enable或Disable語法,勝至還想將'開啟'字句改為其他字語或變更顏色等等,
在此謝謝您了!
作者: hugh0620    時間: 2012-3-22 13:29

本帖最後由 hugh0620 於 2012-3-22 13:34 編輯

回復 1# c_c_lai

   下圖是你想要的結果~
   設兩個表單按鈕
    [按鈕 1]=>open
     [按鈕 2]=>close
    設兩個程式碼在sheet1中
  1.     Sub ex1()  'Close=false Open=True
  2. [按鈕 1].Visible = True
  3. [按鈕 2].Visible = False
  4. End Sub
  5. Sub ex2()  'Open=false Close=True
  6. [按鈕 2].Visible = True
  7. [按鈕 1].Visible = False
  8. End Sub
複製代碼
設一個程式碼在thisworkbook中
  1. Private Sub Workbook_Open()

  2. [按鈕 1].Visible = False

  3. End Sub
複製代碼
[按鈕 2]指定巨集Sheet1.ex1
     [按鈕 1]指定巨集Sheet1.ex2      
[attach]10096[/attach]
[attach]10095[/attach]
作者: Hsieh    時間: 2012-3-22 14:05

回復 1# c_c_lai

[attach]10097[/attach]
一般模組
  1. Sub auto_open()
  2. Dim Sp As Shape
  3. For Each Sp In 工作表2.Shapes
  4. Sp.OnAction = "OC"
  5.    If Sp.TextFrame.Characters.Text = "開啟" Then
  6.       Sp.Visible = msoFalse
  7.       Else
  8.       Sp.Visible = msoTrue
  9.     End If
  10. Next
  11. End Sub
  12. Sub OC()
  13. For Each Sp In 工作表2.Shapes
  14.       Sp.Visible = msoTrue
  15. Next
  16. 工作表2.Shapes(Application.Caller).Visible = False
  17. End Sub
複製代碼

作者: c_c_lai    時間: 2012-3-22 21:11

謝謝版主指導,不過在存檔時,卻出現了以下之訊息:
若要儲存具有這些功能的檔案,請按一下否,在於檔案類型清單選擇啟用聚集的檔案類型。
若要繼續儲存為無巨集活頁簿,請按一下是。
如果選是,存檔後再次開啟,VBA都不見了,選否亦不是,請教應如何正確建置?
作者: Hsieh    時間: 2012-3-22 22:25

回復 4# c_c_lai

[attach]10106[/attach]
作者: c_c_lai    時間: 2012-3-23 06:59

非常感謝版主的指正,以往習慣存成.xls的檔案型態所以沒有留意到2010版的.xlsx和.xlsm型態應用的差異性,確實受教了,多謝您!
今假設如果不是使用  
     工作表1.Shapes(Application.Caller).Visible = False  或者是   [按鈕 1].Visible = False 方式來處理,而是應用  按鈕的字型改變顏色 或 按鈕的外觀的形狀之凹凸來表示的話,那不知該如何撰寫?
多次打擾您真不好意思! 再次說聲感謝您!
作者: Hsieh    時間: 2012-3-23 08:47

回復 6# c_c_lai
請參考VBA的Shape物件的屬性說明
[attach]10107[/attach]
作者: c_c_lai    時間: 2012-3-23 10:56

目前我的表單是用[按鈕 1].Visible = False 方式來處理,因為用 工作表1.Shapes(Application.Caller ) .Visible = False 的方式帶入程式裡出現找不到 OC 的巨集的訊息,多次打擾再次說聲感謝您!




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