2012-10-17 51 views
1

我在VBA中有一個名爲cbo_deptCode的下拉字段。我想另一組字段名爲cbo_moduleCodecbo_moduleName每個用戶從下拉選擇向下cbo_deptCode時間被清除任何當前條目。組合框是窗體控件。我該如何去實現這個目標?基於在VBA中選擇另一個字段來重置字段

+1

是組合框的ActiveX或窗體控件?或者通過數據驗證創建? –

+0

組合框是窗體控件 – methuselah

回答

2

將宏指定給cbo_deptCode。

在宏有類似下面的代碼:

Sub cbo_deptCode_Change() 
    'Update selected index for combo boxes to 0 I.E. no selection 
    ActiveSheet.Shapes("cbo_moduleCode").OLEFormat.Object.Value = 0 
    ActiveSheet.Shapes("cbo_moduleName").OLEFormat.Object.Value = 0 
End Sub 

如果cbo_moduleCode和cbo_moduleName不是在同一張紙上的cbo_deptCode,你需要,而不是指定調用ActiveSheet的板材。而且,如果這些不是實際的控制名稱,則這將失敗。

編輯: 如果你實際上是使用Active-X控件(雖然你說你正在使用窗體控件),形式更簡單: Sheet.[controlname].value = "" IE ActiveSheet.cbo_moduleCode.Value = "" 還是比較令人費解的方法(不推薦),涉及形狀:

ActiveSheet.Shapes("cbo_moduleCode").OLEFormat.Object.Object.Value = ""

+0

我得到**「編譯錯誤 - 檢測到ambigious名稱 - cbo_deptCode - 更改」**。是否因爲我有這個其他代碼:http://pastebin.com/q1m5f2Yh? – methuselah

+1

是的。只需更改任一子上的名稱即可。你不應該有兩個同名的潛艇。如果你想讓另一個子被調用,只需將我給你的東西複製到已存在的代碼中即可,不需要Sub聲明和End Sub。 –

+0

我剛剛意識到我需要更改代碼的ActiveSheet部分。我試過使用這段代碼,但它不起作用:http://pastebin.com/Kh2ac0S0 – methuselah

相關問題