【发布时间】: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':需要对象):(