2017-07-25 43 views
1

所以,我有這個類,我調用了幾個類,其中數據被檢查。他們給出了一個名爲Failcase的錯誤類。現在,當我首次將錯誤設置爲true時,出現錯誤。Microsoft Access VBA無效使用屬性錯誤

的錯誤狀態:

無效使用財產。

Private Sub btnImport_Click() 
    Dim fail As Failcase 
    Set fail.Success = True  '<---- This is where the error occures 

    Set fail = ImportCheckSpec(Me.txtImportSpec) 

    If fail.Success Then 
     MsgBox "Error " + CStr(fail.Code) + ": " + fail.Message, vbCritical, "Error" 
     Exit Sub 
    End If 

    Set fail = ImportCheckDate(Me.txtDateTime) 

    If fail.Success Then 
     MsgBox "Error " + CStr(fail.Code) + ": " + fail.Message, vbCritical, "Error" 
     Exit Sub 
    Else 
     MsgBox "Success" 
    End If 
End Sub 

的Failcase類看起來是這樣的:

Option Compare Database 
Option Explicit 

Public Success As Boolean 
Public Code As Integer 
Public Message As String 

我用:

  • 的Microsoft Access 2013
  • VBA

回答

2

您正在使用OOP,而無需創建Failcase類的新對象。在模塊中試試這個:

Option Explicit 

Public Sub TestMe() 

    Dim fail As New failcase 
    fail.Success = True 
    Debug.Print fail.Success 

End Sub 

在類:

Option Explicit 

Private m_bSuccess As Boolean 

Public Property Get Success() As Boolean 

    Success = m_bSuccess 

End Property 

Public Property Let Success(ByVal bNewValue As Boolean) 

    m_bSuccess = bNewValue 

End Property 

因此,你將實現封裝。有了它,你可以設置更多規則來訪問你的財產 - https://www.google.com/search?q=encapsulation+oop&oq=encapsulation+oop&aqs=chrome..69i57j0l5.3599j0j7&sourceid=chrome&ie=UTF-8

上面的代碼是early binding的一個例子。這是另一個,後期綁定的例子,做同樣的:

Public Sub TestLateBinding() 

    Dim fail As Object 
    Set fail = New failcase 
    fail.Success = True 
    Debug.Print fail.Success 

End Sub 

早期和晚期綁定有不同的優點和缺點。

+0

由於這不是一個高流量的問題,我要說謝謝。這確實是一個明顯錯誤的例子。 – Lukas

+0

@Lukas - 不客氣。 – Vityata

1

它的工作原理是這樣的。

Dim fail As New Failcase 
fail.Success = True