簡體   English   中英

Excel VBA-運行時錯誤'424':必需對象

[英]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

例如。

您使用了不正確的事件偵聽器。 嘗試這個

Private Sub CheckBox1_Change()
    If CheckBox1 = True Then
        CheckBox2 = False
    Else
        CheckBox2 = True
    End If        
End Sub

這是復選框的列表事件偵聽器 在此處輸入圖片說明

此處存在UX(用戶體驗)問題。

  • 復選框用於當您需要用戶選擇一個或多個值時。
  • OptionButton用於需要用戶選擇許多互斥值之一的情況。

因此,您需要的是OptionButtons(ActiveX控件)-確保它們具有相同的GroupName ,並且無需編寫任何代碼即可獲得與您嘗試實現的行為完全相同的行為:

選項按鈕(ActiveX控件)

然后,在您的VBA代碼中,您可以按名稱訪問它們(例如OptionButton1 )以驗證其值。


表單控件與ActiveX控件

“表單控件”只是可以分配給宏的形狀(例如,當用戶單擊它時執行某些操作)-您無法像使用ActiveX控件那樣在代碼中訪問它們及其屬性。

使用ActiveX控件,您可以像訪問全局對象變量一樣訪問它們,並執行以下操作:

CheckBox2.Value = True

您得到的最大提示是IntelliSense :對於ActiveX控件,當在控件名稱后鍵入點( . )時,您會在編輯器中看到一個下拉菜單,告訴您VBE了解您在說什么。 當您對“表單控件”執行相同操作時,您不會得到該下拉列表,並且VBE無法理解您在說什么-如果您堅持並運行該代碼,則會遇到運行時問題像您一樣的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM