访问中的 VBA。组合框的问题

Posted

技术标签:

【中文标题】访问中的 VBA。组合框的问题【英文标题】:VBA in ACCESS. Trouble with ComboBox 【发布时间】:2020-03-24 11:34:54 【问题描述】:

我的 FORM 上有一些 ComboBoxes。其中一个有 items 作为来自字段 PG (cbPG.RowSource = "SELECT DISTINCT W_report.PG FROM W_report WHERE ......) 的 SQL 请求的结果,该字段的大小是 byte时间>。

After reqest

用户可以选择其中一种变体,也可以列出多个以逗号分隔的 (2,4,5,7,11,13)。

Correct value

生成的 ComboBox.value 用于类似于选择打印页面的过程。在对 cbPG 的事件处理程序进行更改之前,一切正常。然后值会自动四舍五入(如果是一个逗号)

wrong value

或出现错误“输入的值不适用于此字段”(如果有几个逗号),我必须从备份中复制 cbPG,因为我可以'找不到将 cbPG.value 格式更改为 byte 的属性。

这是使用我的 ComboBox 的程序的一部分
Public Function MnogoListov(str As String) As String
Dim i, j As Integer
Dim res As String
Dim listArr() As String
res = ""
ReDim listArr(Len(str)) As String
For i = 1 To Len(str)
If Mid(str, i, 1) <> "," And Mid(str, i, 1) <> "." Then
listArr(j) = listArr(j) & Mid(str, i, 1)
Else
j = j + 1
End If
Next
For i = 0 To j
If i = 0 Then
res = listArr(i)
Else
res = res & " OR W_report.PG = " & listArr(i) End If
Next
MnogoListov = res
End Function

【问题讨论】:

【参考方案1】:

你不能那样做。组合框用于从多个值中选择一个。

所以,要么使用多选列表框,要么使用简单的文本框 - 类似于选择打印页面 - 解析输入值来获取项目(页面)的序列(列表)。

【讨论】:

感谢您的回答。我考虑过切换到 ListBox 和 TextBox,但我有大约十几个这样的表单 - 转换需要时间。此外,正如我所描述的那样,ComboBox 在一个真实的项目中工作(类似于选择要打印的页面)。套用这个问题:如何将每个 ComboBox 元素的格式设置为字符串? 组合框的返回值始终是一个字符串——即使它是一个数字。 从 ComboBox 失去焦点后,如果我将 [1,2,3] 放入其中,则 VBA 会给我一个错误,如果我放入 [1,2],则会给出“1”。看起来价值变成了字节。但我知道 ComboBox.Value - String。看不懂 如前所述,组合框不适用于多值输入。仅一项。在你的情况下,只有一位数。 这是 1 分钟视频的链接,以展示其工作原理drive.google.com/open?id=1kPJiyTi1jkpkGNrNuGCigZTrEMfYnZat

以上是关于访问中的 VBA。组合框的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何更新 ms access vba 中的多值组合框?

在 Excel VBA 中动态调整组合框的宽度

访问表单 VBA ComboBox 点击事件

在 VBA 中访问选择组合框列返回“函数未定义”-错误

将组合框设置为另一个组合框的值 - Access Vba

通过在列表下拉组合框中选择它来访问 VBA 代码以转到另一个表单上的特定记录