函数调用时对象所需的错误

时间:2012-12-13 02:03:38

标签: vba outlook-vba

我制作了一个类模块并命名为Time。我想在其中创建一个函数来创建Time对象的实例并返回它。见下面的代码。如果你能想出一个更好的方法来编写这个函数,我会全神贯注。我遇到的问题是,当我发表以下声明时:

  

tsheet.MondayStart = Time.Construct(Item.Value)

此调用之前的debug.print语句显示Item.Value为“08:30”。 tsheet的类型为TimeSheet,而且期望为MondayStart属性分配一个Time类型的对象。但是,当此语句在运行时执行时,我得到了对象所需的错误。我甚至尝试删除paranthesis,但所有这一切都会带来另一个错误“编译错误:预期结束语句”

我该如何解决这个问题?请指教。太糟糕的vba不支持construtors的概念: - (

艾伦

'IN TIME CLASS MODULE
Public Function Construct(Value As String) As Time
  'This function expects a string formatted like: 08:30
  'Time.Delimiter returns ":"
  Dim tempTime As Time
  Dim vhours As Integer
  Dim vminutes As Integer
  Dim arrTime() As Time

  arrTime = Split(Value, Time.Delimiter)
  hours = CInt(Trim(arrTime(0)))
  minutes = CInt(Trim(arrTime(1)))
  Set tempTime = New Time
  tempTime.hours = vhours
  tempTime.minutes = vminutes

  Construct = tempTime
End Function

2 个答案:

答案 0 :(得分:1)

实际上我建议您使用已实现的VBA方法DateValue和TimeValue,它们将接受一个字符串并为您提供所需的内容。

我不确定你需要在这里重新发明轮子。当然我可能错过了什么,所以请让我知道。

答案 1 :(得分:0)

使用新的结果如下:

Set MonStart = New TimeFrame
Set tsheet.MondayStart = MonStart.Initialize(MonStart, Item.Value)

(比较,这是以前的:

Set MonStart = New TimeFrame
Set tsheet.MondayStart = TimeFrame.Initialize(MonStart, Item.Value)

在函数返回值赋值上也使用Set

代表第一个代码示例:

...
    Set Construct = tempTime
End Function

以及其他代码示例:

...
    Set Initialize = Value
End Function