VBA 使用复选框和文本框编辑用户表单列表框(基于 excel 数据库)

VBA Edit Userform Listbox (based on excel database) using Checkboxes and Textboxes

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

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

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

你好 Userform Layout

假设第 5 列为 A(状态)

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

Checkbx1 数据进入 A(状态)

Textbx1 数据转到 B(姓名)

Textbx2 数据转到 C(姓氏)

Textbx3 数据转到 D(DOB)

Textbx4 数据转到 E(年)

"You may assign this code to a command button"

'数据传输

如果 Form1.checkbox1=TRUE 那么

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

Activecell.value="True"

其他

Activecell.value="False"

如果

结束

'将姓名转给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)

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

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

然后使用下面的代码查找并 Select 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