2012-10-07 6 views
1

클래스 개체가 인식되지 않는 문제가 있습니다 (오류 91, 개체 참조가 설정되지 않음). 여기 코드는 다음과 같습니다클래스 개체가 인식되지 않습니다.

---Main (Standard Module) 
Option Explicit 
Public wbCode As Workbook 

Public Sub MainSub() 
Dim str As String 
Dim tables As New CTables 
Call SetExcelObjects 
str = tables.shExclusions.Cells(20, 1) ---this produces error 91 
End Sub 

Public Sub SetExcelObjects() 
Dim tables As New CTables 
Dim str As String 
Set wbCode = ThisWorkbook 
Set tables.shExclusions = wbCode.Worksheets("Exclusions") 
str = tables.shExclusions.Cells(20, 1) ---this line executes okay 
End Sub 


---CTables (Class Module) 
Option Explicit 
Public shExclusions As Worksheet 

답변

1

이 시도 :

---Main (Standard Module) 
Option Explicit 
Public wbCode As Workbook 

Public Sub MainSub() 
Dim str As String 
Dim tables As New CTables 
Call SetExcelObjects(tables) 
str = tables.shExclusions.Cells(20, 1) ---this produces error 91 
End Sub 

Public Sub SetExcelObjects(tables as CTables) 
Dim str As String 
Set wbCode = ThisWorkbook 
Set tables.shExclusions = wbCode.Worksheets("Exclusions") 
str = tables.shExclusions.Cells(20, 1) ---this line executes okay 
End Sub 


---CTables (Class Module) 
Option Explicit 
Public shExclusions As Worksheet 
+0

는 린을 주셔서 감사합니다! – TSB

+1

+1, 당신이 제안한 변화를 말하기가 어려웠으므로, 나는 미래의 독자들을 위해 설명하고 있습니다. 문제는 객체'tables'가 Main의 범위 내에서 설정되지 않았다는 것입니다. 객체 참조를'SetExcelObjects'에 전달함으로써'SetExcelObjects'는'tables'를 정의하여 그것을 쓸모있게 만듭니다. 또 다른 해결책은 테이블을 전체 모듈에 대한 전용 변수로 만드는 것입니다. –

관련 문제