Board logo

標題: [發問] Excel VBE commandBar control ID 碼的列表 [打印本頁]

作者: Scott090    時間: 2013-5-21 12:09     標題: Excel VBE commandBar control ID 碼的列表

例如對VBE的操作總要有 ID如下:
Application.VBE.CommandBar().findcontrol(ID:= controlID,)

不知哪位大師有這個表可以分享 ,謝謝
作者: GBKEE    時間: 2013-5-21 13:56

回復 1# Scott090
  1. Option Explicit
  2. Sub CommandBar_Id()
  3.     Dim C As CommandBar, W As CommandBarControl, E As CommandBarControl, I As Integer
  4.     On Error Resume Next
  5.     For Each C In Application.CommandBars
  6.         For Each W In C.Controls
  7.             For Each E In W.Controls
  8.                 Cells(I, "A") = E.Caption
  9.                 Cells(I, "B") = E.ID
  10.                 I = I + 1
  11.             Next
  12.         Next
  13.     Next
  14. End Sub
複製代碼

作者: Scott090    時間: 2013-5-21 17:14

回復 2# GBKEE

謝謝 大師,已依照指點執行;
以下的VBA碼是大師曾經指點的,用來顯示 References窗體的, 其中的 ...  .FindControl(ID:=1561).execute  1561找不到;
另,爬文中也有用 ID:=2578 來叫用 VBProject 專案密碼窗體,這個 2578 也在列表中找不到

敢問大師 這些ID是怎麼來的
敬請指點
感恩

    Private Sub 設定引用項目()  '遺漏項存在時用手動刪除,用手動存檔後重新執行程式.
    Dim E
    On Error Resume Next
    With ThisWorkbook.VBProject
        For Each E In .References
         Debug.Print E.Name
        Next
    End With
    If Err <> 0 Then
       Application.CommandBars.FindControl(ID:=1561).Execute
       Application.SendKeys "%T"
       Application.SendKeys "R"
      End
    End If
End Sub
作者: GBKEE    時間: 2013-5-21 17:38

回復 3# Scott090
FindControl(ID:=1561).execute  1561找不到,會是2010的ID不同??
這ID是應用程式自行建立的編碼.

(我用2003)

[attach]15049[/attach]
  1. Option Explicit
  2. Sub CommandBar_ID()
  3.     Dim C As CommandBar, W As CommandBarControl, E As CommandBarControl, xl_Id As Integer
  4.     On Error Resume Next
  5.     For Each C In Application.CommandBars
  6.         For Each W In C.Controls
  7.             For Each E In W.Controls
  8.                 If E.Caption Like "檢視程式碼*" Then xl_Id = E.ID
  9.             Next
  10.         Next
  11.     Next
  12.     設定引用項目 xl_Id
  13. End Sub
  14. Private Sub 設定引用項目(Bar_ID)  '遺漏項存在時用手動刪除,用手動存檔後重新執行程式.
  15.     Dim E
  16.     On Error Resume Next
  17.     With ThisWorkbook.VBProject
  18.         For Each E In .References
  19.          Debug.Print E.Name
  20.         Next
  21.     End With
  22.     If Err <> 0 Then
  23.        Application.CommandBars.FindControl(ID:=Bar_ID).Execute
  24.        Application.SendKeys "%T"
  25.        Application.SendKeys "R"
  26.       End
  27.     End If
  28. End Sub
複製代碼

作者: Scott090    時間: 2013-5-21 19:10

回復 4# GBKEE


    謝謝 GBKEE 大師
我換個方式:
.findcontrol(ID:=1561). excecute 可以在 2010執行, 取出引用 references 窗體
只是這個號碼 1561 在 ID 列表內找不到

感恩
作者: GBKEE    時間: 2013-7-29 07:36

回復 5# Scott090
請執行 2#的程式


[attach]15619[/attach]
作者: Scott090    時間: 2013-10-20 18:20

回復 6# GBKEE


    謝謝 GBKEE 大師




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