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

标签 vba excel

我有一个非常大的 Excel 表,其中包含以下元素:

Name    Date    StartWorkedAt   FinishWorkAt    HoursWorked
我正在创建一个按钮来操作这些数据,但是在决定存储所有数据的格式时遇到了麻烦。列表中的每个人都有多个他们都工作的日期,所以我希望能够检查开始以及每个人在不同日期的完成时间。
我写了一个简短的脚本来计算我有多少个唯一的名字,这样我就可以使用一个多维数组来访问每个人的数据,如下所示:
workTable[0][0]
因此,理想情况下,这会给我第一个人在他/她工作的第一个日期的开始和/或结束时间。
但我遇到的问题是数据有多种格式。 name 是一个字符串,date 是一个 Date,hoursWorked 是一个整数。
有什么更简单的方法可以将数据存储在 VBA 中,以便我可以单独访问每个人并找出他们工作的日期以及他们开始和结束的时间?

最佳答案

使用 Class module为您需要的每个列提供属性并创建该类的集合。

例如,创建一个具有以下属性的类模块(名为 ExcelRow):

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

您将需要每个这些私有(private)变量的公共(public)属性。下面是为 pName 属性设置 Get 和 Let 的示例。公共(public)变量可以以不同的方式命名为私有(private)变量:
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

关于vba - 在 VBA 中,如何将整个 Excel 表存储到包含所有相关子信息的易于访问的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37474891/

相关文章:

excel - VBA 错误 1004 应用程序定义错误或对象定义

c# - 在 C# 中获取 Excel 单元格的数据类型

Excel VBA如何从函数返回变量

arrays - 在用户窗体终止/关闭 VBA 时调用数组

excel - VBA:无法抑制 Range.TextToColumns 中字符串的自动转换?

vba - 检查找到值旁边的单元格是否为空 VBA

java - Apache POI 数据格式化程序无法应用自定义格式 "0.0 p.p.;(0.0 p.p.)"

mysql - 删除只有一列的重复列从sql查询中的重复列中获得所有可用的所有值

excel - 使用数组并在 vba 中使用以下代码查找多个字符串?

vba - 从 VBA 中的命名范围获取值