2016-01-20 42 views
0

我有一個帶有多個ActiveX複選框的Excel工作表。他們的名字是「CheckBox1」,「CheckBox2」,「CheckBox3」等,如果我把它們稱爲變量,例如:以複選框的名稱作爲字符串訪問ActiveX複選框值

If CheckBox1 = True Then 
MsgBox "OK" 
EndIf 

一切工作正常。

我想用一個For循環加載我所有複選框的數組值,所以我必須引用它們的名稱作爲字符串來創建連續的名稱。我嘗試了好幾種解決方案,如:

Dim CheckBox As Shape 
Set CheckBox = ActiveSheet.Shapes("CheckBox1") 
If CheckBox.OLEFormat.Object.Value = 1 Then 
MsgBox "OK" 
End If 

顯示「運行時錯誤‘438’:對象不支持此屬性或方法」

If ActiveSheet.CheckBoxes("CheckBox1").Checked = False Then 
MsgBox "OK" 
End If 

顯示「運行時錯誤「 1004「:以的CheckBox類工作表的特性是imossibble」

If ActiveSheet.Shapes("CheckBox1").Value = xlOn Then 
MsgBox "OK" 
End If 

顯示「運行時錯誤‘438’:對象不支持此屬性或方法」

正如在主題中,我怎樣才能用String作爲名稱來引用ActixeX複選框的值?可能嗎?

回答

2

我試過像這樣,將對象定義爲OLEObject而不是形狀。 s2的作品,s2失敗....放在這裏允許格式化,而不是評論。

Sub test() 

Dim s As OLEObject 
Dim s2 As Shape 

Set s = ActiveSheet.OLEObjects("CheckBox1") 
Set s2 = ActiveSheet.Shapes("CheckBox1") 

Debug.Print s.Object.Value 
Debug.Print s2.OLEFormat.Object.Value 

End Sub 
+0

Thanks,ActiveSheet.OLEObjects(「CheckBox1」)。Object.Value works perfect。 – Limak