我正在构建一个excel文件。 我需要多个用户将数据输入到他/她为每行数据分配的列。 第一个用户创建每行的基列。 然后单击按钮在每行上创建一个按钮,供第二个用户编辑行并添加他/她的数据。
感谢这个问题/答案(@Tim Williams):excel vba add form button to each row 我能够在每一行上创建按钮。 但是我希望每个按钮能够触发要求用户输入的用户表单。 我的问题: 如何为每个创建的按钮提供触发用户窗体编辑该特定行的能力?
感谢您的帮助。
查看图片:
答案 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
目前的结果:
最后,我向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
“确定”按钮只会使用在用户窗体中输入的数据更改行数据。