我正在尝试创建一个按钮来运行我的数据过滤器。我想自定义大小,名称(通过vba),但我无法显示我的按钮。不太确定缺少什么。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Public Sub CommandButton1_Click()
Call Module1.Main
End Sub
答案 0 :(得分:1)
不确定问题是什么。如果在同一工作簿中并且您想要从不同位置调用sub,则声明其范围Public
。
例如,如果我在sheet1
代码窗格中有以下内容:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Public Sub CommandButton1_Click()
Test1
Test2
Test3
End Sub
Public Sub Test1()
MsgBox "Test1"
End Sub
在模块1中
Public Sub Test2()
MsgBox "Test2"
End Sub
在模块2中
Public Sub Test3()
MsgBox "Test3"
End Sub
由于公共范围声明,所有内容都可以从CommandButton1_Click
运行良好。
注意:
Call
已过时,此处不需要CommandButton1_Click
将包含在包含按钮的工作表的代码窗格中。编辑:
如果您在添加按钮并进行定位后,我会引用您的question列出不同的方法。如果您发现有用,请记得向作者投票。
关于添加ActiveX和定位的一个例子如下:
Sub activexControl_add()
'create ActiveX control
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.OLEObjects.Add("Forms.CommandButton.1")
.Left = 25
.Top = 25
.Width = 75
.Height = 75
.Name = "xCommandButton1" 'name control immediately (so we can find it later)
End With
End Sub
从我自己的代码示例中我有一个例子,由于用户具有不同的屏幕分辨率,我的ActiveX对象正在移动,所以我将以下内容放在工作簿打开事件中以确保按钮是我想要的位置并且大小为我想要他们:
With wsCCGOverview '<== sheet containing combobox control (this could be your button)
.OLEObjects("ComboBox1").Left = 296.25
.OLEObjects("ComboBox1").Width = 132.75
.OLEObjects("ComboBox1").Height = 40
.OLEObjects("ComboBox1").Top = 187.5
.Shapes("ComboBox1").ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft
End With