我對VBA非常陌生(並且只在Excel中知道它)。在我的excel頁面騎自行車通過一些複選框
我想通過一些(但不是全部)複選框循環。它們目前通過CheckBox15命名爲CheckBox1。 Howe循環說CheckBox5到CheckBox10嗎?
我想我希望有一個'方法'類似'CheckType'的控件,將允許我檢查名稱?
這是我試過的。導致編譯錯誤 - 未定義子或函數,並突出顯示工作表。
Private Sub BoxCheck()
atLeastOneChecked = False
For i = 2 To 4
If Worksheets("ActiveX").Controls("Checkbox" & i).Value = True Then
atLeastOneChecked = True
End If
Next i
End Sub
雖然上述不工作,下面是什麼呢:
Private Sub BoxCheck()
atLeastOneChecked = False
For i = 1 To 2
If Sheet2.CheckBox2.Value = True Then
atLeastOneChecked = True
End If
Next i
End Sub
當然,在循環沒有對結果的影響,但它編譯和atLeastOneChecked從假變爲真時Checkbox2是真正。請注意,Sheet2已被命名爲ActiveX。我顯然不明白Worksheet和Controls如何工作。有人可以幫忙嗎?
修復下面所述的錯誤後,這仍然不起作用。我簡化如下:
Private Sub BoxCheck()
Dim ole As OLEObject
atLeastOneChecked = False
Set ole = Sheets("ActiveX").OLEObjects("Checkbox2")
If ole.Value = True Then
atLeastOneChecked = True
End If
End Sub
這是行不通的。它未能在:
If ole.Value = True Then
的錯誤狀態:對象不支持此屬性或方法
這是OLEObjects真實的,而不是複選框。當我查看ole的屬性時,我看到它的Object屬性設置爲Object/Checkbox,並且此Object具有一個值。我想這就是我在if語句中應該引用的內容,但我不知道如何。
您遇到的一個錯誤是您在使用'Worksheets'時正在使用'Worksheet'。爲了趕上這一點,在模塊的頂部輸入「Option Explicit」。 – Brad
謝謝 - 改變了,但它仍然無法正常工作。我知道爲什麼,但我不知道解決問題的辦法。問題在於Worksheet沒有「控件」成員。它有OLEobjects和Shapes,但我似乎無法讓它工作。 – RoryG