将一个button和macros添加到最后一行

我正在为一家小公司制作一个股票电子表格, 非常新手的Excel用户。 因此,我想使用macros和VBA来完成大部分的工作,所以他们不会因编辑公式或创build图表而不知所措。 在一个理想的世界里,他们会学到一些优秀的东西,但事实是,这是不会发生的。

到目前为止,我有一个很好的用户表单,使input变得容易,一旦按下提交button,它将所有的数据插入到第一个可用行的股票列表。 不过,我也想把一个button放在每行的末尾,如果随后出售一个物品,他们可以按下。 我为此写了一个macros(“销售”),减less物品数量,将物品细节移动到已售出的物料,并在数量变为零时完全删除该行。 我的问题是,我不能得到我的用户窗体的提交button添加到一个macrosbuttonvariables行号。

这是我迄今为止:

Dim LRow As Long Dim ws As Worksheet Dim rng As Range Set ws = Worksheets("Stock Warehouse") LRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Set rng = ws.Cells(LRow, 23) With ws .Cells(LRow, 1).Value = Date .Cells(LRow, 2).Value = Me.CATEGORY.Value (---etc etc until---) .Cells(LRow, 21).FormulaR1C1 = "=Sum(rc[-1]/rc[-11])" rng.Select ws.Buttons.Add(rng.Left, rng.Top, rng.Width, rng.RowHeight).Select Selection.OnAction = "Sale" Selection.Characters.Text = "SALE" With Selection.Characters(Start:=1, Length:=4).Font .Name = "Lucida Grande" (---more formatting stuff---) End With 

如果我把它设置为一个命名的单元格(即“W5”),它的作品,并插入button。 这只是让它在LRow中插入一个button,23这是有问题的! 这可能是非常简单的,但我一直盯着这几天,无法弄清楚。

我跑你的代码,它插入的button好吧,但它会更好地避免select

  Set btn = ws.Buttons.Add(rng.Left, rng.Top, rng.Width, rng.RowHeight) With btn .OnAction = "Sale" .Characters.Text = "SALE" With .Characters.Font .Name = "Lucida Grande" ' (---more formatting stuff---) End With End With 

你是否考虑过让一个button保持在冻结行的上方,用户在他们想要删除/处理的任何一行中select一个/任何单元格(你可以告诉/训练它们),然后按下button? 让button使用ActiveCell.Row检测行(通过适当的检查)并从那里开始工作。

我做了类似的事情,但它是两个button,他们移动取决于选定的行,这样用户可以滚动的数据和button会显示时,他们select了他们想要的行。 我用图片作为我的button,并分配给他们的macros:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error Resume Next With ActiveSheet.Pictures("Picture 2") .Top = Target.Offset(1).Top .Left = 930 End With With ActiveSheet.Pictures("Picture 4") .Top = Target.Offset(1).Top .Left = 1005 End With End Sub 

它总是显示在右边的数据和下行1,以免掩盖我在那里的任何笔记。

编辑:

如果用户select一堆行并使用Selection.Rows.Count运行代码,并使用偏移量循环代码,则可以使用此方法使其在select上工作。