编辑每行上的按钮以编辑其行

时间:2018-01-09 15:07:45

标签: excel vba excel-vba button edit

我正在构建一个excel文件。 我需要多个用户将数据输入到他/她为每行数据分配的列。 第一个用户创建每行的基列。 然后单击按钮在每行上创建一个按钮,供第二个用户编辑行并添加他/她的数据。

感谢这个问题/答案(@Tim Williams):excel vba add form button to each row 我能够在每一行上创建按钮。 但是我希望每个按钮能够触发要求用户输入的用户表单。 我的问题: 如何为每个创建的按钮提供触发用户窗体编辑该特定行的能力?

感谢您的帮助。

查看图片: excel VBA

1 个答案:

答案 0 :(得分:1)

感谢@ Wookies-Will-Code

,我找到了解决问题的方法

为每个按钮分配一个调用模块的Onaction脚本。

I want to find this

然后我创建了一个带有此代码的模块,该模块分配给每个按钮。

Sub CommandButton1_Click()
Dim btn As Button, t As Range, sht As Worksheet, i As Long

Set sht = ActiveSheet

sht.Buttons.Delete

For i = 5 To sht.Cells(Rows.Count, "A").End(xlUp).Row
Set t = sht.Cells(i, 4)
Set btn = sht.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
With btn
  .OnAction = "Edit"
  .Caption = "Edit"
  .Name = "Editbutton_" & i

End With

Next i
End Sub

然后在一个带有3个文本框的简单用户窗体上,名为Userform1(TextBox1,TextBox2,TextBox3),我给了它这段代码:

Sub Edit()
With UserForm1
    .Tag = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
    .Show
End With
Unload UserForm1
End Sub

目前的结果: 3

最后,我向Userform1添加了一个OK按钮,其代码如下:

Private Sub UserForm_Activate()
    FillValues
End Sub

Private Sub FillValues()
With Me
    .TextBox1.Value = Cells(.Tag, 1).Value
    .TextBox2.Value = Cells(.Tag, 2).Value
    .TextBox3.Value = Cells(.Tag, 3).Value
End With
End Sub

“确定”按钮只会使用在用户窗体中输入的数据更改行数据。