Ms access 多选组合框-必填字段
这是我第一次在这个网站上发帖,尽管我已经找到了一些帮助我的答案。然而,尽管进行了广泛的研究,我还是无法找到这个具体问题的答案Ms access 多选组合框-必填字段,ms-access,vba,ms-access-2010,ms-office,Ms Access,Vba,Ms Access 2010,Ms Office,这是我第一次在这个网站上发帖,尽管我已经找到了一些帮助我的答案。然而,尽管进行了广泛的研究,我还是无法找到这个具体问题的答案 我有一个表单,其中有多个字段,有些是必填字段,有些不是 我能够为所有必填字段开发代码,例如,除了这个字段(Field1) 不同之处在于Field1是一个带有复选框的下拉列表,其中可以选择多个复选框 如何为以下代码调整此类型的字段 ElseIf Len(Me.Category & "") = 0 Then Cancel = True response = Msg
- 我有一个表单,其中有多个字段,有些是必填字段,有些不是
- 我能够为所有必填字段开发代码,例如,除了这个字段(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
是我的其他字段之一,该代码工作正常,但当我更改字段1的名称时,该代码不起作用
我希望我尽可能清楚,我真的很感谢社区的帮助
谢谢
Abu Fulan我认为您要做的是将所有选定的项目放入一个数组,然后确定数组的长度是否大于0 虽然不完全相同,但我认为这个问题的公认答案(带绿色复选标记的答案)可以稍加修改,以满足您的需求: 编辑 您可以删除阵列部件并仍使用代码:
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
我认为您要做的是将所有选定项放入一个数组中,然后确定数组的长度是否大于0 虽然不完全相同,但我认为这个问题的公认答案(带绿色复选标记的答案)可以稍加修改,以满足您的需求: 编辑 您可以删除阵列部件并仍使用代码:
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,则不显示messagebox。该代码在列表框中循环并计算所选项目的数量。这是确定是否需要告诉用户listbox是必需的所需操作。确定是有意义的,因此我会将此is代码放入一个模块中,然后从表单中调用它,看看它是否大于0。然后显示消息框。因此,我只需将lbox更改为MSForms.ListBox,将lbox更改为field1.ListBoxNo。您将创建一个新模块,并将上面的代码粘贴到其中,然后从表单中将其作为函数调用,并将列表框名称传递到其中。因此,在你的表单中,你会写一些类似GetSelectedItems(你的ListBoxName)的东西,其中“你的ListBoxName”是你的listbox的名称。因此,我会写GetSelectedItems(Field1),其中listbox=Field1我感谢你的快速回复,我看了一下链接,似乎有点困惑。我对数组完全不熟悉。那么如何处理从列表框中选择的项目呢?我是说,从技术上来说,你可以移除阵列。整个想法是,如果所选项目的数量大于1,则不显示messagebox。该代码在列表框中循环并计算所选项目的数量。这是确定是否需要告诉用户listbox是必需的所需操作。确定是有意义的,因此我会将此is代码放入一个模块中,然后从表单中调用它,看看它是否大于0。然后显示消息框。因此,我只需将lbox更改为MSForms.ListBox,将lbox更改为field1.ListBoxNo。您将创建一个新模块,并将上面的代码粘贴到其中,然后从表单中将其作为函数调用,并将列表框名称传递到其中。因此,从表单中,您可以编写类似GetSelectedItems(YourListboxName)的内容,其中“YourListboxName”是列表框的名称