gpt4 book ai didi

arrays - 从数组 VBA 动态创建复选框

转载 作者:行者123 更新时间:2023-12-04 22:32:02 25 4
gpt4 key购买 nike

我有一个用户表单如下:

enter image description here

当我选择我想要的数据库并单击选择时,它会将我带到另一个页面:

enter image description here

所有这些复选框都是根据 sql 查询的输出创建的。

在此示例中,SQL 查询为:

ID            NAME
8 AI_EQ
14 BB_EQ
19 DM_EQ
22 GD_EQ

等等...

我在选择按钮中添加复选框如下(来自记录集 rst ):
'creating checkboxes    
If Not rst.EOF And Not rst.BOF Then
rst.MoveFirst
i = 0
Do
With MultiPage1.Pages(1).Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
.Top = yPos
.Left = 7
.Caption = rst![name]
.Width = 450
.Height = 24
.WordWrap = True
.Value = False
yPos = yPos + 17
i = i + 1
rst.MoveNext
End With
Loop Until rst.EOF
End If
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing

然后,我希望完成按钮考虑用户选择的任何复选框。例如,如果他选择前两个,我想要 "8,14" ID ,以便我可以将它们添加到新的 SQL 查询中。

我想我必须创建一个数组来实现这一点,而不是仅仅拥有 rst![name] .但是我创建它的尝试失败了,即使我拥有正确的数组,我也不知道如何调整它以使其返回 ID选择 NAME 时.

这就是我尝试创建数组的方式(但它没有返回任何内容)
 Dim MyArray() As Variant
For i = 0 To rst.RecordCount
MyArray = rst.GetRows(i)
rst.MoveNext
Next

任何提示/帮助将不胜感激。

最佳答案

由于复选框是动态创建的,因此请执行此操作。

  • 循环遍历所有控件并检查它们是否为复选框
  • 检查它们是否被检查
  • 检查他们是否在 .Tag 中有东西并将其存储在变量中。

  • 代码
    Private Sub CommandButton1_Click()
    Dim cCont As Control
    Dim cbString As String

    For Each cCont In Me.Controls
    If TypeName(cCont) = "CheckBox" Then
    If cCont.Value = True Then
    If cCont.Tag <> "" Then
    If cbString = "" Then
    cbString = cCont.Tag
    Else
    cbString = cbString & "," & cCont.Tag
    End If
    End If
    End If
    End If
    Next cCont

    Debug.Print cbString
    End Sub

    但要使其正常工作,当您创建复选框时,请设置 .Tag ID 的属性(property)值(value)。
    With MultiPage1.Pages(1).Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
    '
    '~~> Rest of the code
    '
    .Tag = rst![ID]
    '
    '~~> Rest of the code
    '
    End With

    关于arrays - 从数组 VBA 动态创建复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51935482/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com