【问题标题】:How to find a string value in a column and return values in all cells from that row?如何在列中查找字符串值并返回该行所有单元格中的值?
【发布时间】:2019-05-09 17:14:13
【问题描述】:

我正在创建一个用户表单,它将要求提供报价单号,在找到报价单号后填充数据,并更新任何信息。我当前使用的宏代码并不完全适用于这个新的用户表单。

我设法让文本框填充下面的代码,但现在如果我更改任何文本框值,我需要它来实际更新单元格。

Private Sub CommandButton1_Click()

Dim ws As Worksheet
Dim strSearch As String
Dim aCell As Range
Dim Sold As String, Soldlr As Long

Set ws = Sheets("Data Entry")

With ws
    strSearch = Me.TextBox1.Value
    Set aCell = .Columns(2).Find(What:=strSearch, LookIn:=xlValues, _
                                 LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                 MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        Me.TextBox1.Text = aCell.Value
        Me.TextBox2.Text = aCell.Offset(, -1).Value
        Me.TextBox3.Text = aCell.Offset(, 0).Value
        Me.TextBox4.Text = aCell.Offset(, 1).Value
        Me.TextBox5.Text = aCell.Offset(, 2).Value
        Me.TextBox6.Text = aCell.Offset(, 3).Value
        Me.TextBox7.Text = aCell.Offset(, 4).Value
        Me.TextBox8.Text = aCell.Offset(, 5).Value

    Else
        MsgBox "Quote Number " & strSearch & " Not Found. Try Again"

    End If

    Exit Sub
End With
End Sub

Private Sub CommandButton2_Click()

Dim ws As Worksheet
Dim strSearch As String
Dim aCell As Range
Dim Sold As String, Soldlr As Long

Set ws = Sheets("Data Entry")

With ws
    strSearch = Me.TextBox1.Value
    Set aCell = .Columns(2).Find(What:=strSearch, LookIn:=xlValues, _
                                 LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                 MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        aCell.Offset(, -1).Value = Me.TextBox2.Text
        aCell.Offset(, 0).Value = Me.TextBox3.Text
        aCell.Offset(, 1).Value = Me.TextBox4.Text
        aCell.Offset(, 2).Value = Me.TextBox5.Text
        aCell.Offset(, 3).Value = Me.TextBox6.Text
        aCell.Offset(, 4).Value = Me.TextBox7.Text
        aCell.Offset(, 5).Value = Me.TextBox8.Text

        MsgBox "Quote Number " & strSearch & " Has Been Updated"
    End If
End With

Exit Sub
End Sub

Private Sub Label1_Click()

End Sub

Private Sub Label6_Click()

End Sub

Private Sub Label8_Click()

End Sub

Private Sub TextBox1_Change()

End Sub

修改后,我可以轻松更改文本框中的数据并更新信息。

【问题讨论】:

  • 您的代码中没有任何内容可以填充文本框。这就是你要问的吗?
  • 是的,先生。如何在找到字符串值的行上填充数据。填充后,我可以更改任何数据并按下更新按钮来更新更改的内容。
  • 在您的用户表单代码Me.TextBoxName.Text = aCell.Value 和不同的列Me.TextBoxDifferentName.Text = aCell.Offset(, 1).Value
  • 要从文本框写回工作表,只需颠倒顺序:aCell.Value = Me.TextBoxName.Text
  • 当我将它放置在更新按钮 (commandButton2_Click) 时,添加它会给我一个(运行时错误'424':需要对象):(

标签: excel vba userform


【解决方案1】:

本质上,您使用的是偏移量,因此如果您的号码在 B10 中找到并且您希望 C10 进入 Textbox1 中,您将使用

Me.Textbox1.Value = aCell.Offset(, 1).value

假设此代码位于表单后面。

【讨论】:

  • 不完全。我会在 textbox1 中输入报价单号。假设报价编号在 B10 上,我需要它从 A10:F10 中获取值,并将其填充到 texbox 1-6 中。填充后,我可以轻松更改文本框中的值并按下更新按钮来更新单元格。请注意,按钮在 Sheet1 上,数据在 Sheet2 上。
  • 好的,原理是一样的,你似乎已经把 Find 位整理好了,所以希望你可以根据自己的需要进行调整。
  • 我是用户表单的新手,几乎没有从多个网站中编写 Find 代码。您的代码将在哪里插入我的?还是我必须修改什么?
  • 它将在If Not aCell Is Nothing Then 行之后。试一试,如果卡住了就回来。
  • 请参阅上面的更新代码了解我现在需要的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多