我有一小段代码用于更大的MS Access数据库,它喜欢不正常的行为。我不能肯定地说,但是当我编译或重新编译数据库时它似乎发生了变化。这是代码:
Private Sub FindCtls()
Dim DatType as String
Dim thisCTL as Control
DatType = Right(ActiveControl.Name, Len(ActiveControl.Name)-4)
For Each thisCTL In Me.Controls
If InStr(1, thisCTL.Name, DatType, 2) > 0 Then
Select Case Left(ThisCtl.Name,4)
Case "Sel_"
Set TgtCtls(0) = thisCTL
' A buncha other Cases
End Select
End If
Next thisCTL
End Sub
问题是,当我单步执行代码时,由于某种原因,thisCTL作为控件的值传递,而不是控件本身。我到处寻找这个答案,这让我使用“Set”命令而不是仅仅把TgtCtls(0)= thisCTL。这有效,直到我反编译DB并重新编译它。做了一个更改(更改了第一个变量的名称),再次编译它,它工作。当我今天上班时,有人告诉我它不再工作了。任何想法都将不胜感激。
编辑:我忘了提到TgtCtls是一个表格范围的数组,在顶部是Dim'd:
Option Compare Database
Dim TgtCtls(2) as Control