在VBA中,如何将整个excel表存储到包含所有相关子级信息的易于访问的数组中?

我有一个非常大的ex​​cel表,其中包含这些元素:

Name Date StartWorkedAt FinishWorkAt HoursWorked 

我正在创build一个button来操作这些数据,但是在决定用什么格式来存储所有数据时遇到了困难。列表中的每个人都有多个date,所以我希望能够检查开始并为每个人在不同的date完成时间。

我写了一个简短的脚本来计算我有多less个唯一的名称,以便我可以使用multidimensional array访问每个人的数据,如下所示:

 workTable[0][0] 

因此, 理想情况下 ,在第一次开始和/或结束时间的第一个date,他/她的工作。

但是我遇到的问题是数据是各种格式。 该名称是一个string,date是一个date,并且hoursWorked是一个整数。

在VBA中存储数据的更简单的方法是什么,以便我可以单独访问每个人,并找出他们的工作date以及何时开始和完成?

使用具有您需要的每个列的属性的Class module ,并创build该类的Collection。

例如,使用以下属性创build一个类模块(名为ExcelRow):

 Private pName As String Private pDate As Date Private pStartWorkedAt As Date Private FinishWorkAt As Date Private HoursWorked As Integer 

您将需要公共属性为每个这些私有variables。 以下是为pName属性设置Get和Let的示例。 公共variables可以不同地命名为私人variables:

 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