Ms access 尝试在Access中打开窗体时出现错误消息

Ms access 尝试在Access中打开窗体时出现错误消息,ms-access,vba,Ms Access,Vba,当我尝试在Access中打开表单时,会收到一条错误消息,提示您输入了已在使用的控件名“col1”。发生此错误的代码位于 以下表格(frm)(i+16).Name=“col”和格式(i,“0”)。这个错误意味着什么?我怎样才能纠正它呢 Sub SetGridColumns(frm As String, FirstDay As Variant, LastDay As Variant) Dim i As Integer ' Sets column headings for all shown date

当我尝试在Access中打开表单时,会收到一条错误消息,提示您输入了已在使用的控件名“col1”。发生此错误的代码位于 以下表格(frm)(i+16).Name=“col”和格式(i,“0”)。这个错误意味着什么?我怎样才能纠正它呢

Sub SetGridColumns(frm As String, FirstDay As Variant, LastDay As Variant)
Dim i As Integer
' Sets column headings for all shown dates in crosstab fsub
DoCmd.OpenForm frm, acDesign, , , , acHidden
For i = 0 To 7
    ' Avoid control name conflicts by renaming them to col1 ...
    ' The dirty constant 16 is the item number of the last non-column item.
    **Forms(frm)(i + 16).Name = "col" & Format(i, "0")**
Next i
For i = 0 To 7
    ' Now give the columns the right control name and control source
    Forms(frm)(i + 16).ControlSource = Format(FirstDay + i, "mm-dd")
    Forms(frm)(i + 16).Name = Format(FirstDay + i, "mm-dd")
Next i
DoCmd.Close acForm, frm, acSaveYes
End Sub

它的意思就是它所说的。要查找已命名为“col1”的控件,请在第一个循环之前,输出以调试窗体控件的所有名称。

如果遇到错误,则可能会有一些名称为col1的延迟控件,等等,尽管从逻辑上讲,它们的名称应为FirstDay+i+“mm dd”。因此,正如Joel所建议的,您可以手动检查并更正这些控件,也可以在重命名之前进行检查:

If Forms(frm)(i + 16).Name <> "col" & Format(i, "0") Then
   Forms(frm)(i + 16).Name = "col" & Format(i, "0")
End If
如果表格(frm)(i+16)。命名为“col”和格式(i,“0”),则
表格(frm)(i+16)。Name=“col”和格式(i,“0”)
如果结束