使用复选框和文本框的VBA编辑Userform列表框(基于Excel数据库)

时间:2018-04-04 15:16:09

标签: checkbox textbox listbox userform

我是一个数据库(5列' s行是自适应的)。此数据按以下顺序排序:姓名,姓氏,出生日期和促销年份。 我还制作了一个基于Listbox的Userform,它可以显示这4个信息。

现在,我想使用userform中的复选框和文本框编辑此数据库。 我已经创建了用户表单,但问题仍然存在于将userform的数据(checkbox:true或false和textbox)传输到相应单元格(右侧人员)的数据库中。

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

格尔茨 Userform Layout

2 个答案:

答案 0 :(得分:0)

假设第5列为A(状态)

|状态|名称|姓| DOB |年|

Checkbx1数据转到A(状态)

Textbx1数据转到B(名称)

Textbx2数据转到C(姓氏)

Textbx3数据转到D(DOB)

Textbx4数据转到E(年)

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

'数据传输

如果Form1.checkbox1 = TRUE则

Shee1.Range(" A&#34)。完(xlDown).Offset(1)。选择

Activecell.value ="真"

否则

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)

答案 1 :(得分:0)

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

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

然后使用下面的代码查找并选择工作表中的数据行

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传输到工作表

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