在excel vba中使用一个子button

我有一个包含客户端数据的电子表格,每行一个客户端,每一行都有一个button,用于启动显示该客户端数据的用户窗体,然后可以更新该客户端的数据并将其写回该客户端的行。 在我们开始使用电子表格之前,每个个案工作人员都会过滤,以便只显示他们的客户。

我想知道是否有一种方法,每行button有一个命令button过程,即当您按下第6行中的button时,它将运行CommandButton6的过程来调用该行中的数据,当您按下第8行中的button时它运行CommandButton8的过程来调用第8行中的数据。但是两者的过程是相同的,所以我可以有一个CommandButtoni子,其中我是行号。

这是一个非常简单的程序,但我不想复制它350次!

Private Sub CommandButton1_Click() UserForm1.TextBox1.Value = Worksheets("Sheet1").Range("C2").Value GetData UserForm1.Show End Sub 

在实施Rory的build议之后,我认为这是最简单最优雅的代码解决scheme。 允许在没有任何进一步configuration的情况下复制和粘贴button,如果统一使用代码。

 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 

如果您不想/不需要devise自定义用户表单,则可以使用Form …命令:

  1. 单击Excel标题栏中的自定义快速访问工具栏下拉菜单。
  2. select更多的命令。
  3. 如果将文档分发给其他用户,请将“对于所有文档(默认)”选项更改为文档名称。
  4. select以select命令:不在function区中的命令。
  5. selectForm …命令。
  6. 点击添加将button添加到右侧的菜单。
  7. 点击OK。

选定表格中的任何单元格后,单击“表格”button。 编辑并按Enter键。 也可以使用标准来筛选值。 不幸的是没有办法编辑表格,但对窄的单元格内容有用。 不需要编码。

https://support.office.com/en-us/article/Add-edit-find-and-delete-rows-by-using-a-data-form-9443c80d-66c6-4c17-b844-64aac5ae841d

您需要一个参数化的Click处理程序,这在VBA中是不可能的。 您可以将350个表单button分配给相同的处理程序,但是它们都将分配UserForm1.TextBox1.Value无论在Worksheets("Sheet1").Range("C2").Value ,并且实际上正在读取您似乎想要的问题有一些“行参数”。

在工作表上有350个表单/ ActiveXbutton通常不是一个好主意:我试着想一个不同的方法。

当您点击一个button时,您所需的行中的Selection是? 您可以使当前/活动行以某种方式突出显示(处理SelectionChanged工作表事件),并在某个位置(在function区?

 UserForm1.TextBox1.Value = Sheet1.Range("C" & Selection.Row).Value 

除此之外, 罗里的build议将工作…但formsbutton不打算这样使用。