2016-05-16 108 views
0

我在工作表上有DatePicker控件。当我在工作表的嵌入代码中时,可以访问控件的值,如下所示:无法从DatePicker获得价值

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 

我检查的属性列表中使用this procedureobj,并没有value财产。我怎样才能得到在DatePicker中设置的日期值?

回答

2

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

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

在你的情况,请尝试以下代码更改删除错误(注意调试线):

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