[英]Excel VBA - Run-Time Error '424': Object Required
對於使用Excel 2013的復選框(ActiveX控件),我具有以下代碼:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
CheckBox2.Value = False
Else
CheckBox2.Value = True
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
CheckBox1.Value = False
Else
CheckBox1.Value = True
End If
End Sub
它的作用是,如果我選中方框1,則取消選中方框2,反之亦然。 但是,如果我將上述代碼用於復選框(窗體控件),則會收到“運行時錯誤'424':所需對象”錯誤消息。 有人知道解決方案嗎?
更新:上面我嘗試從Bytes獲得的文件中嘗試使用的相同代碼,以某種方式起作用。 因為我是VBA的新手,所以我認為我必須坐下來研究Excel,Macros和VBA如何協同工作。 一旦找到問題的根源(從技術上講就是我自己創建的),我將在此處發布有關如何解決問題的答案。 感謝所有發表評論和回復的人。 我真的很感激!
您通過名稱或索引將復選框控件引用到Checkboxes集合中:
Activesheet.CheckBoxes(1).Value
例如。
此處存在UX(用戶體驗)問題。
因此,您需要的是OptionButtons(ActiveX控件)-確保它們具有相同的GroupName
,並且無需編寫任何代碼即可獲得與您嘗試實現的行為完全相同的行為:
然后,在您的VBA代碼中,您可以按名稱訪問它們(例如OptionButton1
)以驗證其值。
“表單控件”只是可以分配給宏的形狀(例如,當用戶單擊它時執行某些操作)-您無法像使用ActiveX控件那樣在代碼中訪問它們及其屬性。
使用ActiveX控件,您可以像訪問全局對象變量一樣訪問它們,並執行以下操作:
CheckBox2.Value = True
您得到的最大提示是IntelliSense :對於ActiveX控件,當在控件名稱后鍵入點( .
)時,您會在編輯器中看到一個下拉菜單,告訴您VBE了解您在說什么。 當您對“表單控件”執行相同操作時,您不會得到該下拉列表,並且VBE無法理解您在說什么-如果您堅持並運行該代碼,則會遇到運行時問題像您一樣的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.