多选组合框 - 必填项
Posted
技术标签:
【中文标题】多选组合框 - 必填项【英文标题】:Multiple Selection ComboBox - Mandatory Field 【发布时间】:2015-12-14 16:36:26 【问题描述】:这是我第一次在网站上发帖,尽管我找到了一些对我有帮助的答案。然而,尽管进行了广泛的研究,我还是无法找到这个特定问题的答案。
我有一个包含多个字段的表单,其中一些是强制性的,而另一些则不是例如,我能够为除此(Field1)之外的所有必填字段开发代码。
不同之处在于 Field1 是一个带有复选框的下拉菜单,其中可以选择多个。
如何为以下代码调整这种类型的字段?
ElseIf Len(Me.Category & "") = 0 Then
Cancel = True
response = MsgBox("You must enter a value in 'Category'.", vbInformation, "Mandatory Field")
Me!Category.SetFocus
Category
是我的其他字段之一,此代码工作正常,但当我更改 Field1 的名称时,代码不起作用。
我希望我尽可能清楚,我非常感谢社区的一些帮助
谢谢,
阿布弗兰
【问题讨论】:
【参考方案1】:我认为您要做的是将所有选定的项目放入一个数组中,然后确定数组的长度是否> 0。
虽然不完全相同,但我认为这个问题的已接受答案(带有绿色复选标记的答案)可以稍作更改,以提供您想要的:
How do I return multi select listbox values into a sentence using Word VBA?
编辑
您可以删除数组部分并仍然使用代码:
Public Function GetSelectedItems(lBox As MSForms.ListBox) As String
Dim i As Integer
Dim selCount As Integer
selCount = -1
'## Iterate over each item in the ListBox control:
For i = 0 To lBox.ListCount - 1
'## Check to see if this item is selected:
If lBox.Selected(i) = True Then
'## If this item is selected, then add 1 to your selCount counter
selCount = selCount + 1
End If
Next
If selCount = -1 Then
'## If no items were selected, return a messagebox saying this is mandatory
msgbox "You MUST select something from the listbox."
Else:
'## Otherwise, don't worry about it
End If
End Function
【讨论】:
感谢您的快速回复,我查看了链接,似乎有点混乱。我对数组完全不熟悉。 那么您如何处理从列表框中选择的项目?我的意思是,从技术上讲,您可以删除阵列片。整个想法是,如果所选项目的数量大于 1,则不会显示消息框。该代码循环遍历列表框并计算所选项目的数量。这是您需要做的,以确定您是否需要告诉您的用户该列表框是强制性的。 好的,所以我会把这个代码放到一个模块中,然后从表单中调用它,看看它是否大于 0。然后显示消息框。所以我只需将 lbox 作为 MSForms.ListBox 更改为 lbox 作为 field1.ListBox 没有。您将创建一个新模块并将上面的代码粘贴到其中,然后从表单中将其作为函数调用并将列表框名称传递给它。因此,从您的表单中,您可以编写类似 GetSelectedItems(YourListboxName) 的内容,其中“YourListboxName”是您的列表框的名称。 所以我会写 GetSelectedItems(Field1) where ListBox = Field1以上是关于多选组合框 - 必填项的主要内容,如果未能解决你的问题,请参考以下文章
组合框多选以在 Access 2016 中的文本框中显示所选项目