我想使用Userform和几个TextBoxes和ComboBox来编辑工作表单元格上的数据。
这是我用来遍历单元格数据的代码:
Private Sub ComboBox1_Click()
Dim rfound As Range
On Error Resume Next
With Sheets("IO-DB")
Set rfound = .Columns(1).Find(What:=ComboBox1.Value, After:=.Cells(1, 1), LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
On Error GoTo 0
If rfound Is Nothing Then Exit Sub
Application.Goto rfound, True
TextBox1.Text = rfound.Offset(0, 0)
TextBox9.Text = rfound.Offset(0, 1)
ComboBox7.Text = rfound.Offset(0, 3)
ComboBox8.Text = rfound.Offset(0, 2)
ComboBox5.Text = rfound.Offset(0, 4)
TextBox4.Text = rfound.Offset(0, 5)
TextBox5.Text = rfound.Offset(0, 6)
ComboBox3.Text = rfound.Offset(0, 7)
ComboBox4.Text = rfound.Offset(0, 8)
ComboBox6.Text = rfound.Offset(0, 10)
TextBox7.Text = rfound.Offset(0, 9)
End With
End Sub
此代码搜索一行并将其放入分配给它们的每个TextBox / ComboBox中。我使用ComboBox1作为我的数据的搜索功能。
如何使用Userform和我的搜索方法编辑单元格上的数据?
答案 0 :(得分:0)
我已经修改了你的代码。 改变了事件:
Private Sub ComboBox1_AfterUpdate()
更改代码:
Dim rfound As Range
On Error GoTo NOFIND
Sheets("Sheet1").Columns(1).Select
Selection.Find(What:=ComboBox1.Value, After:=Sheets("Sheet1").Cells(1, 1), LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
TextBox1.Text = ActiveCell.Offset(0, 0)
TextBox2.Text = ActiveCell.Offset(0, 1)
NOFIND:
End Sub
要更新che cell,请使用以下代码添加按钮Update:
ActiveCell.Offset(0, 0) = TextBox1.Text
ActiveCell.Offset(0, 1) = TextBox2.Text
答案 1 :(得分:0)
如果我理解得很好......
您对数据进行编码是正确的...但使用您的代码:
1)您不能直接插入名称,但您需要在之前填充所有数据的组合(我已链接到第一列)
2)在更新期间使用:
ActiveCell.Offset(0, 0) = TextBox1.Text
ActiveCell.Offset(0, 1) = TextBox9.Text
ActiveCell.Offset(0, 3) = ComboBox7.Text
ActiveCell.Offset(0, 2) = ComboBox8.Text
...
您可能遇到问题,因为VBA可以在您在单元格中写入之前更新Textbox的值
要解决问题1),您可以使用事件AfterUpdate。使用点击和直接插入
要解决问题2),您可以使用以下代码:
Dim Tmp As String
Tmp = TextBox2.Text
ActiveCell.Offset(0, 1) = tmp
每个单元格的...您可以在Button中插入的更新代码:
Private Sub CommandButton1_Click()
在按钮代码中,您需要使用“ActiveCell”代替rfound,因为您没有此变量,但您的代码选择了单元格...