這是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/) –