这是this问题的后续行动。通过构造,构造函数不工作的后续VBA继承?
这里是我的用例:我想比较两个Excel文件逐个单元格并突出显示不同的单元格。每个文件都有几张纸,每张纸都有几列,每一列都有一个标题和几个值(如典型值)。下面是比较代码我的选秀活动图:
,这里是我的选秀类图:
我的目标是使VBA的类型的东西不太繁琐我经常做(例如比较电子表格的新版本和旧版本)。也就是说,我希望它的工作更像是Python的...我特别想写这样的代码:
For Each Sheet1 In File1
Name1 = Sheet1.Name
If File2.sheet_dict.Exists(Name1) Then
Sheet2 = File1.Sheets(File2.sheet_dict(Name1))
Sheet2.Checked = True
For Each Col1 In Sheet1.cols
hdr = Col1.Header
If Sheet2.header_dict.Exists(hdr) Then
Col2 = Sheet2.cols(Sheet2.header_dict(hdr))
Col2.Checked = True
For Each Val1 In Col1.Vals
Val2 = Col2.Vals(Val1.row_number)
Val2.Checked = True
If Not Val1.Match(Val2) Then
Val1.formatBad()
Val2.formatBad()
End If
Next Val1
For Each Val2 In Col2.Vals
If Not Val2.Checked Then
Val2.formatBad
End If
Next Val2
Else
Col1.formatBad()
End If
Next Col1
For Each Col2 In File2.cols
If Not Col2.Checked Then
Col2.formatBad
End If
Next Col2
Else
Sheet1.formatBad()
End If
Next Sheet1
For Each Sheet2 In File2
If Not Sheet2.Checked Then
Sheet2.formatBad()
End If
Next Sheet2
当然我必须加载所有的数据到对象第一,但你这个想法。在VBA中尝试这样做是否疯狂?
嗨再次:)。在我看来,你以某种方式用你自己的方式重写Excel的COM类模型,这是不合理的。如果你想简化或添加一些在模型中没有充分存在的操作,比如'Sheet_Exists(..),Header_Exists(..)'等等,我会用我自己的另外一套例程,但不能重写类模型。 –
你知道Excel的COM类模型的一个很好的图吗?我试图避免使用一种通常用于遍历范围中的单元格的复杂方式(对于我来说,通常是在列上,然后是在列中的值)。我永远不会记得如何获得列中的最后一行,连续的最后一列等等。我已经为这些函数编写了函数,但它很不直观。我认为将这些代码包装在一个类中会简化这个过程。我错了吗? –
我没有图形或UML格式。 [This](https://msdn.microsoft.com/en-us/library/office/ff194068.aspx)是Excel对象模型的指南。我发现一个模型的*小部分*的图形[在这里](https://powerspreadsheets.com/excel-vba-object-model/) –