Class 在vba中合并类?
我在寻找我的程序的正确结构时遇到了一个问题,我试图用类来解决它,但没有成功 我为患者设置了一个班级,每个患者都有以下内容:Class 在vba中合并类?,class,vba,Class,Vba,我在寻找我的程序的正确结构时遇到了一个问题,我试图用类来解决它,但没有成功 我为患者设置了一个班级,每个患者都有以下内容: 名字 操作 外科医生 手术时间 然后每个外科医生应该有一个每天的时间表 因此,我正在考虑使用另一个类作为每日日程安排,它应该具有: 一天 总持续时间 我的想法有些不对劲,我正在努力理解我该怎么做 1) 我的结构适合我想做的事情吗 2) 我如何检查外科医生是否有计划的每日时间表,如果他没有,然后将患者添加到他的时间表 任何帮助都将不胜感激 谢谢, 乔治 班级病人 课
- 名字
- 操作
- 外科医生
- 手术时间
- 一天
- 总持续时间
班级病人 课程表 Test Sub正在计算总持续时间,但我无法根据天数列出它们
一种解决方案是拥有外科医生对象集合和患者对象集合。每个患者都有一名外科医生作为财产,每个外科医生都有一组患者 从中,您可以了解属于外科医生的所有患者的总手术时间 诀窍是了解对象之间的关系-在这种情况下,每个患者有一个外科医生,每个外科医生可以有多个患者。这在逻辑上导致了以下结构: 病人 外科医生 测试程序
+1-好问题。也许你可以研究类链接来实现这一点。我尝试过,但它并没有帮助我理解如何解决我的问题。
Private mstrName As String
Private mstrOperationDescription As String
Private mlngSurgeon As Long
Private mdblOpDuration As Double
Public Property Get Name() As String
Name = mstrName
End Property
Public Property Get OperationDescription() As String
OperationDescription = mstrOperationDescription
End Property
Public Property Get Surgeon() As Long
Surgeon = mlngSurgeon
End Property
Public Property Get OpDuration() As Double
OpDuration = mdblOpDuration
End Property
Private mlngDay As Long
Private mdblTotalDuration As Double
Public Property Get Day() As Long
Day = mlngDay
End Property
Public Property Let Day(ByVal lDay As Long)
mlngDay = lDay
End Property
Public Property Get TotalDuration() As Double
TotalDuration = mdblTotalDuration
End Property
Public Property Let TotalDuration(ByVal dTotalDuration As Double)
mdblTotalDuration = dTotalDuration
End Property
Public Sub Test()
Dim mydata As New clsData
Dim schedule1 As New clsSchedule
Dim schedule2 As New clsSchedule
Dim i As Integer
mydata.InputData
For i = 1 To mydata.PatientCount
If mydata.patient(i).Surgeon = 1 Then
schedule1.TotalDuration = schedule1.TotalDuration + mydata.patient(i).OpDuration
Else
schedule2.TotalDuration = schedule2.TotalDuration + mydata.patient(i).OpDuration
End If
Next i
MsgBox "Total Duration is: " & schedule1.TotalDuration
End Sub
Private mstrName As String
Private mstrOperationDescription As String
Private mobjSurgeon As cSurgeon
Private mdblOpDuration As Double
Property Let Name(txt As String)
mstrName = txt
End Property
Property Let OperationDescription(txt As String)
mstrOperationDescription = txt
End Property
Property Let Surgeon(objSurgeon As cSurgeon)
Set mobjSurgeon = objSurgeon
End Property
Property Let OpDuration(num As Double)
mdblOpDuration = num
End Property
Property Get OpDuration() As Double
OpDuration = mdblOpDuration
End Property
Private mstrName As String
Private mlngSurgeonId As Long
Private mcolPatients As Collection
Private Sub Class_Initialize()
Set mcolPatients = New Collection
End Sub
Property Let Name(txt As String)
mstrName = txt
End Property
Property Get Name() As String
Name = mstrName
End Property
Property Let IdNumber(num As Long)
mlngSurgeonId = num
End Property
Property Get IdNumber() As Long
IdNumber = mlngSurgeonId
End Property
Sub AddPatient(objPatient As cPatient)
mcolPatients.Add objPatient, objPatient.Name
End Sub
Function TotalHours() As Double
Dim objPatient As cPatient
For Each objPatient In mcolPatients
TotalHours = TotalHours + objPatient.OpDuration
Next objPatient
End Function
Sub CheckSurgeonHours()
Dim colSurgeons As Collection
Set colSurgeons = New Collection
Dim colPatients As Collection
Set colPatients = New Collection
'Populate Surgeon and Patient collections from input data
'This is the static data for each object, i.e. name, Id, operation type/duration
Dim objSurgeon As cSurgeon
For Each objSurgeon In colSurgeons
Dim objPatient As cPatient
For Each objPatient In colPatients
objPatient.Surgeon = objSurgeon
objSurgeon.AddPatient objPatient
Next objPatient
Debug.Print objSurgeon.TotalHours
Next objSurgeon
End Sub