无法从DatePicker获取值

我有一个工作表上的DatePicker控件。 当我在工作表的embedded代码中,我可以访问该控件的值,如下所示:

Public Sub showValue() Debug.Print Me.DTPicker21.value End Sub 

我想从模块中获得价值。 代码在这里:

 Sub getDate() Dim obj As Object Dim sht As Worksheet Set sht = ThisWorkbook.Sheets("Tool interface") For Each obj In sht.OLEObjects If obj.Name = "DTPicker21" Then Debug.Print obj.value End If Next End Sub 

当我运行这个, obj.value触发这个错误:

 Object doesn't support this property or method 

我使用这个过程检查了obj的属性列表,并没有value属性。 我怎样才能得到在DatePicker中设置的date值?

我不知道所有的细节,但是一些OLEObjects需要你先访问它们的Object属性,然后才能访问其他的属性。 我认为OLEObject作为一个容器,然后“子对象”是你想要与之交互的实际对象。 例如,如果运行以下两行代码,则会看到第一个返回OleObject ,第二个返回DTPicker

 Debug.Print "Obj: " & TypeName(obj) Debug.Print "Obj.Object: " & TypeName(obj.Object) 

在你的情况下,尝试下面的代码更改以消除错误(请注意debugging行):

 Sub getDate() Dim obj As Object Dim sht As Worksheet Set sht = ThisWorkbook.Sheets("Tool interface") For Each obj In sht.OLEObjects If obj.Name = "DTPicker21" Then Debug.Print obj.Object.Value End If Next End Sub