我有一个很大的excel表,其中包含以下元素:
Name Date StartWorkedAt FinishWorkAt HoursWorked
我正在创建一个按钮来操纵这些数据,但是在确定以什么格式存储所有数据时遇到了麻烦。列表中的每个人都将拥有他们都工作过的多个日期,因此我希望能够检查开始时间以及每个人在不同日期的完成时间。
我写了一个简短的脚本来计算我拥有多少个唯一的名称,以便可以使用多维数组访问每个人的数据,如下所示:
workTable[0][0]
因此,理想情况下,这将为我提供第一个人在其工作的第一天的开始和/或结束时间。
但是我遇到的问题是数据是各种格式的。名称是一个字符串,日期是一个Date,而hoursWorked是一个整数。
有什么更简单的方法将数据存储在VBA中,以便我可以分别访问每个人并找出他们的工作日期以及何时开始和结束?
Class module
对每个需要的列使用with属性,并创建该类的Collection。
例如,使用以下属性创建一个类模块(名为ExcelRow):
Private pName As String
Private pDate As Date
Private pStartWorkedAt As Date
Private FinishWorkAt As Date
Private HoursWorked As Integer
您需要为每个私有变量的每个提供公共属性。这是为pName属性设置Get和Let的示例。可以将公共变量与私有变量的名称不同:
Public Property Get Name() As String
Name = pName
End Property
Public Property Let Name(Value As String)
pName = Value
End Property
然后,您可以拥有一个集合,并向其中添加每个类模块行的实例:
Dim ExcelRows As Collection
Dim Row As ExcelRow
Set ExcelRows = New Collection
Set Row = New ExcelRow
Row.Name = "Joe"
Row.HourseWorked = 3
ExcelRows.Add Row
Set Row = New ExcelRow
Row.Name = "Sam"
Row.HourseWorked = 54
ExcelRows.Add Row
'Or you could use a For Loop for this
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句