2016-05-16 97 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