使用用户表单搜索功能编辑单元格

时间:2014-04-22 05:40:06

标签: excel vba excel-vba edit

我想使用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和我的搜索方法编辑单元格上的数据?

2 个答案:

答案 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,因为您没有此变量,但您的代码选择了单元格...