我当前将数据拆分为多个工作表,并允许用户选择在哪个工作表上运行宏。工作表用作多个系统之间的过滤
我有一个命名范围 (dayList),它将数据按天分组,并为每一天(day1、day2 等)创建一个新工作表。然后,每个工作表必须应用另一个宏(屏幕数据),该宏将以完全相同的方式过滤每个工作表中的数据。
我正在尝试创建一个用户界面,使用户能够单击指定范围中的一个单元格来运行该特定日期的宏。我当前使用的代码片段如下。
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:我需要:
- 使用 VBA 设置按钮的位置,最好将位置与单元格引用匹配,例如
范围("A1").Button.Insert
- 将单元格引用从命名范围传递到宏
这是一个超出他能力范围的优秀菜鸟。任何帮助将不胜感激!
最佳答案
1) .Add 方法需要 4 个参数。前两个是 TOP 和 LEFT 位置,用于获取按钮的左上角,第三个和第四个是按钮的高度和宽度设置。
因此,如果您知道要添加一个按钮,并且引用是将其放置在单元格 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
关于vba - 设置生成表单控制按钮的宏的按钮位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510941/