我有一个包含客户端数据的电子表格,每行一个客户端,每行都有一个按钮,用于启动显示该客户端数据的用户窗体,然后您可以更新该客户端的数据并将其写回到该行的行客户。在我们开始使用电子表格之前,每个案例工作者都会进行过滤,以便只显示其客户端。
我想知道是否有一种方法为每行上的按钮设置一个命令按钮程序,即当您按下第6行中的按钮时,它会运行CommandButton6的程序来调用该行中的数据,当您按下按钮时在第8行,它运行一个CommandButton8的过程来调用第8行中的数据。但是两者的过程是相同的,所以我可以有一个CommandButtoni子,其中我是行号。
这是一个非常简单的程序,但我不想复制它350次!
Private Sub CommandButton1_Click()
UserForm1.TextBox1.Value = Worksheets("Sheet1").Range("C2").Value
GetData
UserForm1.Show
End Sub
答案 0 :(得分:1)
在实施Rory的建议后,我认为这是最简单,最优雅的代码解决方案。如果与代码统一完成,则允许复制和粘贴按钮而无需任何进一步配置。
Sub AddVote()
' This is a simple vote tally counter. Each time a button is clicked,
' the vote count in the third column is incremented by one.
' Imagine: first column = candidate name; second column holds form button;
' Thid column = vote count
' Create a Form button and assign this macro. Copy and paste button!
Dim rngTally As Range
' Use rngTally to point to the cell in the third column (3, in the formula)
' in the same row as the top left corner of the button.
Set rngTally = Cells(ActiveSheet.Buttons(Application.Caller).TopLeftCell.Row, 3)
' Increment the value of the cell pointed to by rngTally by 1
rngTally = rngTally + 1
End Sub
如果您不想/需要设计自定义用户表单,可以使用Form ...命令:
如果选择了表格中的任何单元格,请单击“表单”按钮。编辑并按Enter键。也可以使用Criteria过滤值。遗憾的是无法编辑表单,但对于窄单元格内容很有用。无需编码。
答案 1 :(得分:0)
您需要一个参数化的Click
处理程序,您无法在VBA中使用该处理程序。您可以将350个表单按钮分配给相同的处理程序,但是他们都会分配UserForm1.TextBox1.Value
Worksheets("Sheet1").Range("C2").Value
中的Selection
,而实际上正在阅读您似乎想要的一些问题"行参数"。
工作表上有350个表单/ ActiveX按钮通常不是一个好主意:我试着考虑采用不同的方法。
单击按钮时,您需要行中的SelectionChanged
吗?您可以以某种方式使当前/活动行突出显示(处理Selection
工作表事件),并在某处(在功能区?中)使用一个按钮,该按钮可以在UserForm1.TextBox1.Value = Sheet1.Range("C" & Selection.Row).Value
下工作:< / p>
sqlsrv_query
除此之外,Rory's suggestion可以正常工作......但表格按钮并不打算像这样使用。
答案 2 :(得分:0)
为每个按钮设置一个更整洁的方式。
Old