【问题标题】: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 的名称时,代码不起作用。

我希望我尽可能清楚,我非常感谢社区的一些帮助

谢谢,

阿布弗兰

【问题讨论】:

    标签: ms-access vba ms-access-2010 ms-office


    【解决方案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
    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    相关资源
    最近更新 更多