我仍然有diffculty與此問題。我正在使用自定義類模塊:TimeFrame和TimeSheet。以下是縮短版本:對象不支持此屬性或方法錯誤的自定義類
_________________________
'TIMEFRAME CLASS MODULE
'This class records Military Time, but allows
'you to also display it in Civilian Time
Private pHours As Integer
Private pMinutes As Integer
Private pTotalMinutes As Integer
Public Property Get hours() As Integer
hours = pHours
End Property
Public Property Let hours(Value As Integer)
If Value >= 1 And Value <= 24 Then
pHours = Value
Else
Err.Raise 9009, , "Hours Value [" & CStr(Value) & "] is not valid."
End If
End Property
Public Property Get minutes() As Integer
minutes = pMinutes
End Property
Public Property Let minutes(Value As Integer)
If Value >= 0 And Value <= 59 Then
pMinutes = Value
Else
Err.Raise 9010, , "Minutes Value [" & CStr(Value) & "] is not valid."
End If
End Property
Public Property Let Initialize(str As String)
'This property expects a string formatted like: 08:30
Dim vhours As String
Dim vminutes As String
Dim arrTime() As String
If InStr(str, Me.Delimiter) Then
arrTime = Split(str, Me.Delimiter)
vhours = Trim(arrTime(0))
vminutes = Trim(arrTime(1))
If IsNumeric(vhours) Then
pHours = CInt(vhours)
End If
If IsNumeric(vminutes) Then
pMinutes = CInt(vminutes)
End If
Else
'Set to defaults
pHours = 0
pMinutes = 0
End If
End Property
...
_____________________________
'TIMESHEET CLASS MODULE
Private pEmployeeID As Integer
Private pStartDate As Date
Private pEndDate As Date
Private pMonStart As TimeFrame
Private pMonEnd As TimeFrame
Private pMonBreak As Double
Private pTuesStart As TimeFrame
Private pTuesEnd As TimeFrame
Private pTuesBreak As Double
Private pWedStart As TimeFrame
Private pWedEnd As TimeFrame
Private pWedBreak As Double
Private pThursStart As TimeFrame
Private pThursEnd As TimeFrame
Private pThursBreak As Double
Private pFriStart As TimeFrame
Private pFriEnd As TimeFrame
Private pFriBreak As Double
Public Property Get EmployeeID() As Integer
EmployeeID = pEmployeeID
End Property
Public Property Let EmployeeID(Value As Integer)
If Value > 0 Then
pEmployeeID = Value
Else
MsgBox "Employee ID " & Value & " is an incorrect value." & vbCrLf & "Employee ID must be a positive integer"
End If
End Property
Public Property Get StartDate() As Date
StartDate = pStartDate
End Property
Public Property Let StartDate(Value As Date)
pStartDate = Value
End Property
Public Property Get EndDate() As Date
EndDate = pEndDate
End Property
Public Property Let EndDate(Value As Date)
pEndDate = Value
End Property
Public Property Get MondayStart() As TimeFrame
Set MondayStart = pMonStart
End Property
Public Property Set MondayStart(ByRef Value As TimeFrame)
Set pMonStart = Value
End Property
Public Property Get MondayEnd() As TimeFrame
Set MondayEnd = pMonStart
End Property
Public Property Set MondayEnd(ByRef Value As TimeFrame)
Set pMonEnd = Value
End Property
Public Property Get MondayBreak() As Double
MondayBreak = pMonBreak
End Property
Public Property Let MondayBreak(Value As Double)
pMonBreak = Value
End Property
Public Property Get TuesdayStart() As TimeFrame
Set TuesdayStart = pTuesStart
End Property
Public Property Set TuesdayStart(ByRef Value As TimeFrame)
Set pTuesStart = Value
End Property
Public Property Get TuesdayEnd() As TimeFrame
Set TuesdayEnd = pTuesStart
End Property
Public Property Set TuesdayEnd(ByRef Value As TimeFrame)
Set pTuesEnd = Value
End Property
Public Property Get TuesdayBreak() As Double
TuesdayBreak = pTuesBreak
End Property
Public Property Let TuesdayBreak(Value As Double)
pTuesBreak = Value
End Property
...
在我的主要模塊中,我打一個接一個地調用兩個子例程。
- 我有一個名爲TimeSheetCollection全程變量,它是一個集合包含類型的TimeSheet
- 首先我調用子程序ReadWeeklyTimeSheets(),其設置TimeSheetCollection對象的實例,在今天的mailitems讀取和從所獲得的值mailitem的主體我們在每個TimeSheet中設置屬性。這個子程序工作得很好。
- 接下來,調用名爲ExportTimeSheetsToDatabase()的子例程。我已經輸入幾個Debug.print聲明,我上Item.MondayStart和Item.MondayEnd性質的錯誤消息:「對象不支持此屬性或方法」
主要模塊:
Sub ExportTimeSheetsToDatabase()
Dim Item As TimeSheet
For Each Item In TimeSheetCollection
Debug.Print "TSCollection Count: " & TimeSheetCollection.count
Debug.Print Item.EmployeeID & ", " & Item.StartDate & ", " & Item.EndDate
Debug.Print Item.MondayStart '<<< Error occurs here
Debug.Print Item.MondayEnd
Debug.Print "Toal Hours: " & Item.TotalWeeklyHours
Next Item
End Sub
由於項目的類型是考勤卡,你可以從類模塊見上面,它幷包含Get方法:「」
Public Property Get MondayStart() As TimeFrame
Set MondayStart = pMonStart
End Property
從我研究的語法似乎正確的,當我輸入點運算符項目後,我的列表出現與所有屬性顯示。這不像我拼錯任何東西。請指教。
Alan Alan
爲什麼你希望能夠打印'TimeFrame',它不是一個標準的數據類型。您需要處理'TimeFrame'對象並返回可打印的標準類型。 –