编译错误:
编译错误:仅公共对象中定义的用户定义类型 模块可以被强制转换为变体,也可以传递给变体 功能
我是VBA的新手,我的任务是为Dynamics SL中的自定义屏幕调试一些代码。我做的第一件事就是看它是否已编译,我得到了上述信息。
当我阅读内置帮助参考时,我发现以下错误:
您试图将公共用户定义类型用作参数或 类模块的公共过程的返回类型,或者是类的字段 公共用户定义的类型。仅限公共用户定义的类型 在公共对象模块中定义的可以这种方式使用。
我也经历过这些类似的问题:
他们有同样的错误,但我没有看到上述两个问题所关注的集合对象。
如果您可能知道可能导致此错误的原因,请不要犹豫,建议。
代码:
Private Sub cpjt_entity_Chk(ChkStrg As String, retval As Integer)
Dim ldDate As Sdate
Dim xStrDailyPost As Sdate
ldDate.val = GetObjectValue("cpe_date")
'xStrDailyPost = DateToStr(ldDate)
'Call MsgBox("Daily Post Date: " & xStrDailyPost, vbOKOnly, "TEST")
serr1 = SetObjectValue("cld_id08", xStrDailyPost) <- Error highlights "xStrDailyPost"
End Sub
SetObjectValue的定义:
Declare Function SetObjectValue Lib "swimapi.dll" Alias "VBA_SetObjectValue" (ByVal ctlname$, newval As Variant) As Integer
提前谢谢!
答案 0 :(得分:0)
您可能正在使用最初使用Dynamics SL编写的代码(实际上当时是Solomon IV)基本脚本语言(BSL)宏语言而不是VBA。
无论如何......解决方法是,通过&#34; val&#34;您的xStrDailyPost SDate实例的方法。代码看起来应该是这样的:
serr1 = SetObjectValue("cld_id08", xStrDailyPost.val)
我实际上没有对此进行测试,但我很确定这会解决您的问题。
如果你想要更多的背景,&#34; Sdate&#34;实际上只是一个整数的一个非常薄的包装(实际上我认为它是一个简短的,但我从来没有发现我真的需要确定)。 &#34; Val&#34; method返回SDate变量中的基础整数。