需要检查现有按钮并在其下方添加新按钮(不是命令按钮)

时间:2016-03-24 19:27:03

标签: excel vba button

我有以下代码工作,其中用户输入传递路线的名称,然后为路线创建工作表和按钮。然后,他们可以点击按钮,然后将它们带到相应的路线工作表,在那里他们可以输入发票编号。我需要设置它,以便添加其他路由。现在,新按钮会覆盖现有按钮。我需要的是在现有按钮下添加新路线的新按钮。更糟糕的是,这需要在具有不同路线数量的多个站点使用。因此,我需要工作表能够让用户添加其他路径(这会导致添加其他按钮),如果他们在一列中找到8个按钮,我希望它能够启动另一个列的右侧第一列按钮。我很难找到一个很好的方法来做到这一点。我非常感谢任何指导。谢谢。这是我到目前为止使用的代码:

    Sub AddRoute()
    Dim btn As Button
    Application.ScreenUpdating = False
    Dim t As Range
    Dim sName As String
    Dim wks As Worksheet
    Worksheets("NewRoute").Copy after:=Sheets(Worksheets.Count)
    Set wks = ActiveSheet
    Do While sName <> wks.Name
        sName = Application.InputBox _
          (Prompt:="Enter new route name")
        On Error Resume Next
        wks.Name = sName
        Worksheets("Home").Activate
        On Error GoTo 0

        Set t = ActiveSheet.Range(Cells(2, 12), Cells(3, 13))
        Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)


    With btn
      .OnAction = "'btnS""" & sName & """'"
      .Caption = sName
      .Name = sName
    End With

    Application.ScreenUpdating = True
    Loop
    Set wks = Nothing

End Sub



Sub btnS(sName)
  Worksheets(sName).Activate
    Range("A:A").Find("").Select

End Sub

1 个答案:

答案 0 :(得分:0)

问题是,无论何时运行宏,您都会引用相同的范围“t”。你应该声明两个变量int并用2和3初始化它,并在循环结束时为这两个int变量添加2。

例如:

<div class="container">
   <div class="field">Text</div>
   <div class="field">Text</div>
   <div class="arrow"></div>
</div>