0
這是有關錯誤91的發佈#12772920的延續。好的,這裏是情況。 (1)如果這行被註釋掉,則(2)產生錯誤91.如果沒有註釋掉,代碼運行正常。 (3)這應該指向公衆對象公司到「公司」表,不是嗎?我很困惑,爲什麼這條線似乎並不像(1)那樣設置shCompanies對象。錯誤91 - 對象未設置
Option Explicit
Public wbCode As Workbook
Public Sub Main()
Dim tables As New CTables
Set wbCode = ThisWorkbook
Call SetExcelObjects
(2)Call tables.Indexing
End Sub
Public Sub SetExcelObjects()
Dim tables As New CTables
(3)Set tables.shCompanies = wbCode.Worksheets("Companies")
End Sub
---Class Module CTables
Option Explicit
Public shCompanies As Worksheet
Public Sub Indexing()
Dim rng As Long
Dim tables As New CTables
(1)Set tables.shCompanies = wbCode.Worksheets("Companies")
rng = tables.shCompanies.UsedRange.Rows.Count
End Sub
喜道格:我要去嘗試下一個公共實例......這裏就是我仍然困惑:正如您指出的,我創造CTABLES的兩個實例 - 在Main()和Indexing()中。但是這兩個都是私有範圍變量,即使它們都被稱爲「表」。我不清楚Indexing()中第二次使用'table'是如何重新聲明的,並且替換Main()中的第一個用法。這兩個「表格」變量是不是分開的? – TSB
是的,他們是分開的,獨特的。你原來的代碼失敗了,因爲'SetExcelObjects'中的表對象是該子例程的本地對象,只存在於它內部。它絕不會影響'Main'中聲明的'tables'實例。 'Main'中的表實例永遠不會有'shCompanies'屬性集。所以,當你從main調用'TableIndexing'時失敗。我希望有所幫助。你應該通讀一些變量的範圍,特別是類實例的範圍。 –