我在工作表上有一个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中设置的日期值?
答案 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