在表單中,動態生成ActiveX 組合框控制元件,設計模式下,滑鼠左鍵點擊生成的組合框控制元件,表單左上角顯示的是控制元件名稱(默認值是ComboBox1),滑鼠右鍵點擊組合框控制元件,進入屬性選項卡,
屬性卡中也有一個名稱(默認值是ComboBox1);(據 excel 幫助檔案,作業表上的 ActiveX 控制元件有兩個名稱:一個是包含該控制元件的圖形的名稱,可以在查看作業表時,在“名稱”框中看到
該名稱;另一個名稱是控制元件的代碼名稱,可以在“屬性”視窗中“(名稱)”右邊的單元格中看到該名稱。首次向作業表添加控制元件時,圖形名稱和代碼名稱是匹配的。但是,如果其中一個名
稱改變了,另一個不會隨之自動改變。);現在想修改這兩個名稱,網上找到一段示例代碼如下,Sub InsertComboBox(),該段代碼中的 ctl.Name = "Combo" 不能運行,提示:方法 'Name'
作用于物件'IMdcCombo'時失敗。
請教高手:問題怎么解決?還有其它辦法通過VBA代碼修改控制元件的這兩個名稱嗎?
Sub InsertComboBox()
Dim ole As OLEObject
Dim ctl As MSForms.ComboBox
Sheet2.Select
Cells(3, 5).Select
' 插入復合框
Set ole =Sheet2.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
' 命名
ole.Name ="Combo"
Set ctl = ole.Object
ctl.Name = "Combo"
ctl.AddItem "Item1"
ctl.AddItem "Item2"
ctl.AddItem "Item3"
ctl.ListIndex = 0 ' 第一個專案的ListIndex是0
' 添加Click事件,此處省略
End Sub
uj5u.com熱心網友回復:
你跟蹤代碼了嗎?你的錯誤不是name無法賦值,而是 Cells(3, 5).Select
應該改成: Sheet2.Cells(3, 5).Select
uj5u.com熱心網友回復:
如果sheet中已經有了一個EMBED("Forms.ComboBox.1","")控制元件,
而且名稱也是"Combo",那么你再添加一個控制元件ctl,賦值Name="Combo" ,
就會提示作用于物件'IMdcCombo'時失敗的出錯資訊。
uj5u.com熱心網友回復:
問題不在這里,注釋掉這行代碼 ctl.Name = "Combo" 運行正常,留著這行代碼,出現上述錯誤提示
uj5u.com熱心網友回復:
請看原文中的變數定義,ole 和 ctl 是不同的變數,那么,應該可以賦值相同的 Name 吧?
uj5u.com熱心網友回復:
表單左上角顯示的控制元件名稱 和 屬性選項卡中的名稱是一回事。在設計狀態下,選中控制元件,在表單左上角修改控制元件名稱后再到控制元件屬性選項卡,發現名稱已經修改了
uj5u.com熱心網友回復:
請看原文中的變數定義,ole 和 ctl 是不同的變數,那么,應該可以賦值相同的 Name 吧?
已測驗過,你的代碼第一次運行沒問題,但是第二次再運行就彈框。
uj5u.com熱心網友回復:
請看原文中的變數定義,ole 和 ctl 是不同的變數,那么,應該可以賦值相同的 Name 吧?
已測驗過,你的代碼第一次運行沒問題,但是第二次再運行就彈框。
是啊,不知道怎么解決,所以請高手看看
uj5u.com熱心網友回復:
是啊,不知道怎么解決,所以請高手看看
先判斷控制元件名稱是否為空,再添加控制元件試試看。
uj5u.com熱心網友回復:
是啊,不知道怎么解決,所以請高手看看
先判斷控制元件名稱是否為空,再添加控制元件試試看。
代碼第一次運行沒問題,但是第二次再運行就彈框。
uj5u.com熱心網友回復:
代碼第一次運行沒問題,但是第二次再運行就彈框。
你應該學VB的做法,每運行一次ComboBox控制元件名稱加1,
如Combo1,Combo2,Combo3...
這樣就不會出現ComboBox控制元件名稱重復的情況了。
uj5u.com熱心網友回復:
代碼第一次運行沒問題,但是第二次再運行就彈框。
你應該學VB的做法,每運行一次ComboBox控制元件名稱加1,
如Combo1,Combo2,Combo3...
如:ctl.Name = "Combo"改為
ctl.Name = "Combo" & ActiveSheet.Shapes.Count
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112432.html
標籤:VBA
上一篇:ADO操作UUID的問題
