您可以将值存储在表中吗?然后你可以在表格中有一列指定该字段是否可以被删除,这将很容易构建到你的VBA中。
编辑作进一步的解释:
你有列表框松绑(即无特定领域作为其数据源)。
创建一个包含ID(作为自动编号)列的表格,要在列表框中显示的值(作为文本框)以及最后一列可以勾选yes或no(作为布尔值或是/否字段)。例如。
ID Values Allow deletion?
1 Example Yes
2 Another example No
3 Yes another example Yes
在您的列表框的rowsource中,选择该表。
您的删除子现在可以运行以下代码。
dim qry as string
dim strLookup as string
strLookup = dlookup("[Allow deletion]","[Your Table]", YOURSELECTEDFIELDHERE & "=[Values]")
if strLookup = "No" Then
msgbox "You're not allowed to delete this field."
exit sub
else
qry = "DELETE * FROM [Your Table] WHERE [Values] = YOURSELECTEDFIELDHERE"
CurrentDB.Execute qry
Me.YourListBoxName.Requery
end if
这会寻找你从列表框中抢过值,匹配它允许删除字段,删除该字段被标记为Yes或离开它,如果它被标记为
号
如果您只想暂时删除该字段并在下次载入表单时显示该字段 - 实际上将其隐藏,则必须在名为“Show”的表中添加更多列,这也将是是/否字段,并将默认设置为是。
然后,您会将行源设置为SELECT * FROM [YOURTABLE] WHERE [Show] = "Yes"
。
然后在上面的代码qry
应改为设置为:
UPDATE [YOURTABLE] SET [YOURTABLE].[Show] = "No" WHERE ((([YOURTABLE].[Values])=YOURSELECTEDFIELD));
那么这将显示的值更改为无,所以当列表框重新查询,将不会再出现。
您需要运行另一个查询以将它们全部更改回“是”。
您不想删除哪些特定项目?列表中的某个位置或某些文本内容?无论哪种方式,您都可以检查循环,如果它是“必需”项目之一,则不会删除。 –