错误 438 (不支持此方法... )该方法何时有效?



好的,所以我有一个集合:做出一些澄清:在控制报告的模块顶部:ConReps

Option Compare Database
Option Explicit
Public cCenter As New colCenters
Public colCenters As New Collection

我根据需要从表单上的一系列按钮加载集合:


Private Sub tgl_100_Click()
If tgl_100 = 0 Then
Dec (rIterator)
colCenters.Remove "100"
Exit Sub
Else
Inc (rIterator)
Call XXXFilter("100")
End If
If Me.tgl_All = -1 Then Me.tgl_All = 0
End Sub

总之,这将用于筛选报告,总共有多达32个选项,没有预先警告选择。因此,我选择使用带有一些简单代码的切换按钮来加载集合,以便稍后在filter WHERE语句中使用。

集合加载在ConReps 中的XXXFilter中

Public Sub XXXFilter(Filter As String)
Dim i As Integer
If rIterator = 1 Then Set colCenters = New Collection
If rIterator = 1 Then Set cCenter = New colCenters
If Filter = "remove" And rIterator > 0 Then
GoTo resetSQL
ElseIf Filter = "remove" And rIterator = 0 Then
pFSQL = ""
Exit Sub
End If
With cCenter
.CallCenter = Filter
colCenters.Add cCenter, Key:=Filter
'Debug.Print colCenters.count
End With
Exit Sub
resetSQL:
pFSQL = " WHERE Site1 LIKE *" & cCenter(1) & "*"
For i = 1 To rIterator
pFSQL = pFSQL & " OR Site1 LIKE *" & colCenters(i) & "*"
Next i
End Sub

来自Class模块colCenters的信息如下:

Option Compare Database
Option Explicit
Option Base 1
Private c_Loc As String
Property Get CallCenter() As String

CallCenter = c_Loc
End Property
Property Let CallCenter(L As String)
c_Loc = L
End Property
Public Function rfSQL()
Dim i As Integer
If rIterator = 1 Then
pFSQL = " WHERE Site1 LIKE *" & cCenter(1) & "*"
ElseIf rIterator <> 0 Then
pFSQL = " WHERE Site1 LIKE *" & cCenter(1) & "*"
For i = 1 To rIterator
pFSQL = pFSQL & " OR Site1 LIKE *" & colCenters(i) & "*"
Next i
Else
MsgBox "An Error in Class Module colCenters" & vbCrLf & " has occurred code : rfSQL ", vbOKOnly, "colCenters Error"
End If
Debug.Print pFSQL
End Function

因此,我面临的问题的核心是:

集合的有效属性:添加、删除、计数、项我可以添加,我可以删除,我可以计数。但是。项目每次抛出438错误"时失败;对象不支持此属性或方法";

我认为代码中的某个地方是它抛出这个错误的原因,但我无法弄清楚。你们中有人看到了什么可以解释的吗?

有人提到,从保存tgl_100:的表单中的另一个命令按钮调用集合

Sub cmd_OpenReport
...
If rIterator = 1 Then
pFSQL = " WHERE Site1 LIKE *" & cCenter(1) & "*"
ElseIf rIterator <> 0 Then
pFSQL = " WHERE Site1 LIKE *" & cCenter(1) & "*"
For i = 1 To rIterator
pFSQL = pFSQL & " OR Site1 LIKE *" & colCenters(i) & "*"
Next i
Else
MsgBox "An Error in Class Module colCenters" & vbCrLf & " has occurred code : S_OQERO ", vbOKOnly, "Switchboard Error"
End If
...
End Sub

pFSQL是一个公共字符串变量。

首先,这个。。。

Public cCenter As New colCenters
Public colCenters As New Collection

甚至不编译。

也就是说,

我认为代码中的某个地方是它抛出这个错误的原因,但我无法弄清楚。

在过程中代码的第一行开始处放置断点(F9(。运行它,当VBA在断点处停止时,用F8遍历它并找到导致错误的行。

最新更新