【问题标题】:VBA Edit Userform Listbox (based on excel database) using Checkboxes and Textboxes使用复选框和文本框的 VBA 编辑用户表单列表框(基于 excel 数据库)
【发布时间】:2018-04-27 16:31:13
【问题描述】:

我有一个数据库(5 列和行是自适应的)。此数据排序为:姓名、姓氏、出生日期和晋升年份。 我还制作了一个基于列表框的用户表单,可以显示这 4 个信息。

现在我想在用户窗体中使用复选框和文本框来编辑这个数据库。 我已经制作了我的用户表单,但问题仍然存在于将用户表单的数据(复选框:true 或 false 和文本框)传输到相应单元格(正确的人)上的数据库中。

知道我应该如何思考或解决这个问题吗?我已经尝试了一些东西,但我无法显示可以传输和复选框和文本框信息的解决方案。

问候 Userform Layout

【问题讨论】:

    标签: checkbox textbox listbox userform


    【解决方案1】:

    假设第 5 列为 A(status)

    |状态|姓名|姓氏|出生日期|年|

    Checkbx1 数据到 A(status)

    Textbx1 数据到 B(Name)

    Textbx2 数据转到 C(姓氏)

    Textbx3 数据到 D(DOB)

    Textbx4 数据到 E(Year)

    “您可以将此代码分配给命令按钮”

    '数据传输

    如果 Form1.checkbox1=TRUE 那么

    Shee1.Range("a:a").End(xlDown).Offset(1).Select

    Activecell.value="True"

    其他

    Activecell.value="假"

    如果结束

    '将名字转移给B

    ActiveCell.Offset(0, 1).Value = StrConv(TextBox1, vbProperCase)

    '将姓氏转移到C

    ActiveCell.Offset(0, 2).Value = StrConv(TextBox2, vbProperCase)

    '将DOB转移到D

    ActiveCell.Offset(0, 3).Value = StrConv(TextBox3, vbProperCase)

    '将年份转移到 E

    ActiveCell.Offset(0, 4).Value = StrConv(TextBox4, vbProperCase)

    【讨论】:

    • 非常感谢,但我使用列表框,我可以选择该列表框中的任何名称。因此,除非选择了与该名称对应的单元格,否则使用偏移量并不总是一种选择。我应该如何将其放入代码中?
    • 分享您的用户表单的屏幕截图,这将使我了解您的要求和数据传输
    • 截图已添加到问题中(参见链接用户表单布局)
    【解决方案2】:

    您可以使用此代码填充列表

    Private Sub UserForm_Initialize()
        Sheets("Sheet1").Range(Sheets("Sheet1").UsedRange.Address).Name = "MyList"
        ListBox1.ColumnCount = Range("MyList").Columns.Count
        ListBox1.RowSource = "MyList"
    End Sub
    

    然后使用下面的代码在Sheet中查找并选择数据行

    If ListBox1.ListIndex < 0 Then
    MsgBox " Select a row first !"
    Exit Sub
    Else
    Cells.Find(What:=ListBox1.List(ListBox1.ListIndex), After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=True, SearchFormat:=False).Activate
    Cells.FindNext(After:=ActiveCell).Activate
    

    然后使用 Offset 将数据从 UserForm 传输到 Sheet

    ActiveCell.Offset(0, 4).Value = UserForm1.TextBox1.Text
    ActiveCell.Offset(0, 5).Value = UserForm1.Checkbox1.value
    ActiveCell.Offset(0, 6).Value = UserForm1.optionbutton1.value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      相关资源
      最近更新 更多