设置生成表单控件按钮的宏的按钮位置

时间:2012-05-09 06:39:33

标签: excel vba excel-vba excel-2007

我目前有数据,我正在拆分成多张工作表,并允许用户选择他们运行宏的工作表。工作表用作多个系统之间的过滤

我有一个命名范围(dayList),它将数据分组为天,并为每一天(day1,day2等)创建一个新工作表。然后,每张工作表都必须应用另一个宏(屏幕数据),以完全相同的方式过滤每个工作表中的数据。

我正在尝试创建一个UI,该UI将近似于用户能够单击指定范围中的一个单元格来运行该特定日期的宏。我目前使用的代码片段如下。

 Sheets("LaunchScreen").Activate
    Cells(rowCounter, 6).Value = "Day" & dayCounter
    ActiveSheet.Buttons.Add(538.5, 56.25, 48.75, 13.5).Name = "Day" & dayCounter
    ActiveSheet.Buttons("Day" & dayCounter).Select
    Selection.OnAction = "JoinTransactionAndFMMS"

我循环使用此按钮为每天创建一个新按钮,然后将按钮名称作为参数传递给另一个宏,以查找此工作簿中共享相同名称的工作表。

TLDR:我需要:

  1. 使用VBA设置按钮的位置,优选地将匹配位置设置为小区参考,例如 Range("A1").Button.Insert
  2. 将指定范围内的单元格引用传递给宏
  3. 一个优秀的菜鸟在他头顶。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

1).Add方法需要4个参数。前两个是TOP和LEFT位置,用于获得按钮的UPPER LEFT角,第3个和第4个是按钮的高度和宽度设置。

所以,如果你知道你想要添加一个按钮,并且引用是将它放在单元格C10(比A1更好的例子),那么这样就可以了:

ActiveSheet.Buttons.Add(Range("C10").Top, Range("C10").Left, 48.75, 13.5).Name = "Day" & dayCounter     

2)你的宏必须首先被设计为接受一个“传递”到它的参数。所以,像

Sub MyMacro(MyRange As Range)
    MsgBox MyRange.Address
End Sub

现在,您的其他宏可以调用 MyMacro ,您必须传入调用的参数:

Sub test2()
   Call MyMacro(Range("Animals"))
End Sub