无法从DatePicker获取价值

时间:2016-05-16 17:24:26

标签: excel vba excel-vba

我在工作表上有一个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 procedure检查了obj的属性列表,但没有value属性。如何获取在DatePicker中设置的日期值?

1 个答案:

答案 0 :(得分: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